我有一个相当正常的设置,其中Apache代理通过AJP协议向在Tomcat内运行的servlet发出请求.
我们已经在Apache 2.0.46/Tomcat 5.0.28上运行此设置多年没有问题,但最近更新到Apache 2.2.3/Tomcat 5.5.
问题是我们已经注意到,间歇性地(可能是3次中的一次)Apache会以某种方式将servlet服务的页面的"Content-Type"HTTP头从"text/html"转换为"text/plain",导致浏览器显示HTML源而不是呈现它.
有没有人见过这种行为,知道可能是什么原因?我怀疑我们在servlet代码中做了一些不好的事情,旧版本的Tomcat/Apache更加宽容.
更新:我已经确认它是Apache更改标头.如果我直接浏览到Tomcat,则不会出现问题.
某些webapps没有正确设置它们所服务的mime类型的内容,但是在独立服务时仍然可以正常工作,因为浏览器等客户端应用程序能够解释内容的类型.但是当在Apache之后服务时,这些应用程序将无法正常运行,因为Apache将提供默认类型的text/plain.
解决方案是为这些Web应用程序的apache虚拟主机添加DefaultType None行:
DefaultType None
Run Code Online (Sandbox Code Playgroud)
http://httpd.apache.org/docs/2.2/mod/core.html#defaulttype
从我的博客文章:http: //patternbuffer.wordpress.com/2011/11/30/mime-type-issue-with-apache-mod_jk-and-mod_proxy-serving-plain-text/
| 归档时间: |
|
| 查看次数: |
5486 次 |
| 最近记录: |