首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在appengine-web.xml中使用静态文件声明时,Javascript文件被用作HTML文件。

问在appengine-web.xml中使用静态文件声明时,Javascript文件被用作HTML文件。
EN

Stack Overflow用户
提问于 2013-02-01 13:11:49
回答 1查看 552关注 0票数 1

我在我的appengine-web.xml中使用以下内容启用了应用程序引擎中静态图像文件的缓存

代码语言:javascript
复制
<static-files>
<include path="/css/images/**.gif" expiration="1d" />
    <include path="/css/images/**.png" expiration="1d" />
    <include path="/css/images/wind_pointers/*.png" expiration="7d" />
    <include path="/css/images/**.jpg" expiration="1d" />
    <include path="/errors/*" />
</static-files>

这非常有效,直到我发现了一个奇怪的副作用:有时候,appengine用我的HTML页面的内容来提供一个JavaScript文件,因此我得到了大量的JavaScript错误,因为JavaScript解释器是由HTML而不是JS提供的:

​

​

现在,如果我简单地注释掉我前面提到的appengine-web.xml中的静态文件部分,一切都很好:.js文件与它们自己的内容一起服务,我没有问题:

​

​

这对我来说很奇怪。.js文件甚至不在静态文件部分中指定的目录中。我的appengine-web.xml中是否出现了语法错误,从而导致了一些常见的错误?

幸运的是,我能够在部署的应用程序和本地dev服务器上轻松可靠地再现这一点,只需简单地注释掉appengine-web.xml.中的appengine-web.xml.部分。在Chrome和IE中都会发生这种情况。我在使用Java应用程序引擎。

EN

回答 1

Stack Overflow用户

发布于 2013-02-01 17:00:56

我设法弄清楚发生了什么事:

我在我的web.xml中有一个过滤器,它的目的是在用户请求页面但没有登录的情况下返回一个特殊的HTML页面。但是,我发现这个过滤器也适用于浏览器也会为 .js 文件生成的请求,所以我的过滤器将返回.js文件而不是.js文件。

奇怪的是,当从appengine-web.xml.中删除该部分时,我没有问题如果没有该部分,AppEngine将恢复默认行为,根据文档,默认行为是将所有文件视为静态文件,在这种情况下,我预计问题总是会发生的。另外,有时一个.js会返回,有时一个HTML会返回--它似乎是某个地方的竞争条件。对我来说还是个谜。

无论如何,我现在确保过滤器只应用于对站点的HTML页面的请求,这解决了问题。谢谢你的评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14647068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档