处理 .JS 文件的简单请求时 Tomcat 响应挂起

标签 tomcat encoding tomcat7 mime-types mime

我的 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/

相关文章:

windows - Amazon EC2 (Windows) 实例上的 Tomcat 服务器没有远程响应

java - 网址为 : "/servlet" goes to "ip/servlet" instead of "ip/app/servlet"

jsp - Tomcat只为一个用户执行JSP文件

java - 来自用户的 Apache Tomcat 服务器屏蔽过程

Tomcat 启动失败,标识符无效

ruby - hpricot-UTF-8 中的无效字节序列

c - H.264 1080p 编码

java - 什么是汤姆猫? Web 容器还是 EE 容器?

database - 在 ISO-8859-1 Oracle 数据库中编码 "€"字符

java - 质子 CEP : 100% CPU usage after a few hours