Apache错误地将jsp页面转换为"text/plain"

And*_*ewR 1 apache tomcat ajp

我有一个相当正常的设置,其中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,则不会出现问题.

Kyl*_*ord 6

某些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/