我的 Tomcat 7 服务器上有一个 JavaScript 文件。
但是,当我尝试通过 HTTP GET 检索文件时,响应挂起并且没有将文件完全写入我的客户端。它将大约 80% 的文件写入我的客户端,然后响应似乎挂起。此时我在 tomcat 日志中找不到任何内容。
这似乎不是浏览器的问题,它与 wget、Chrome、Firefox 和 IE 挂起。
如果我重命名文件扩展名以便将其检测为不同的 MIME 类型,它会工作并下载(例如重命名为 test.blah)。注意:.txt(纯文本)也失败。
我注意到文件中可能编码了一些奇怪的字符:
iconv -f ascii -t ascii jquery.jqplot.js > test
iconv: illegal input sequence at position 321379
我曾尝试使用 iconv 查找并删除任何奇怪的字符,但无济于事。
iconv f ascii -t ascii//IGNORE jquery.jqplot.js > test #still does not work)
文件在这里:
http://www.tempsend.com/081FEAAA7F/D7C0/jquery.jqplot.js
- 注意:如果我在 web.xml 中将“js”扩展名的 mime 映射从“application/javascript”更改为“application/octet-stream”,它将正常下载。
** 更新:
我能够通过将文件直接放入 webapps/ROOT/并尝试获取它来重现它。详细信息:RHELS 5.9 -tomcat 7.0.27 和 7.0.52。
还注意到只有在通过 HTTP 远程访问文件时才会发生这种情况(它通过 HTTPS 或通过本地主机工作)。这让我认为这可能是一些奇怪的内联网防火墙问题。
最佳答案
这对我来说在干净的 Tomcat 7.0.53 安装上没有任何问题(在我写这篇文章时使用 RC,因为 7.0.53 尚未正式发布)。
我记得过去几年与 Tomcat 和 Javascript 相关的唯一问题是用户代理无法识别 mime 类型。
我也用压缩检查过它,它仍然有效。
因此,这很可能是您的应用程序正在做的事情。我建议查看过滤器和任何配置为提供 javascript 和/或静态资源的 servlet。
关于处理 .JS 文件的简单请求时 Tomcat 响应挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22621778/