如何使用mod_代理保留通过AJP连接器发送到Apache的Tomcat HTTP响应的内容类型头

如何使用mod_代理保留通过AJP连接器发送到Apache的Tomcat HTTP响应的内容类型头,apache,tomcat,proxy,content-type,axis2,Apache,Tomcat,Proxy,Content Type,Axis2,在通过AJP/1.3连接器访问Apache背后Tomcat中托管的Axis2 web服务时,我遇到了一个错误的HTTP响应Content-Type头问题 我可以通过RESTful界面在浏览器中访问web服务,没有任何问题,我可以看到结果,但不知何故,Apache正在将Tomcat发送的响应Content-Type头从text/xml更改为text/plain,并阻止我通过NetBeans中的SOAP使用web服务,由于不支持的内容类型:text/plain支持的内容类型为:[text/xml]异

在通过AJP/1.3连接器访问Apache背后Tomcat中托管的Axis2 web服务时,我遇到了一个错误的HTTP响应
Content-Type
头问题

我可以通过RESTful界面在浏览器中访问web服务,没有任何问题,我可以看到结果,但不知何故,Apache正在将Tomcat发送的响应
Content-Type
头从
text/xml
更改为
text/plain
,并阻止我通过NetBeans中的SOAP使用web服务,由于
不支持的内容类型:text/plain支持的内容类型为:[text/xml]
异常

以下是我的Apache vhosts配置的相关部分:

<VirtualHost *:80>
    ServerAdmin me@myserver.example
    ServerName  myserver.example
    ServerAlias other.myserver.example

    ProxyPreserveHost On 
    SetEnv force-proxy-request-1.0 1
    SetEnv proxy-nokeepalive 1

    <Location /axis2/services>
        ProxyPass ajp://localhost:8009/axis2/services
        ProxyPassReverse ajp://localhost:8009/axis2/services
    </Location>
</VirtualHost>
线路至

ProxyPass http://localhost:8080/axis2/services
ProxyPassReverse http://localhost:8080/axis2/services

在过去的两天里,我一直在工作中寻找类似的东西

在ApacheHTTPD和Tomcat中,过去也有一些bug产生类似的问题,但大多数似乎至少在2年前已经解决。我认为这是任何使用当前软件的人都可能遇到的问题-这肯定是我目前正在经历的:

Tomcat7.x中可能有一个补丁,但是还没有人测试过它。 我计划在大约一周后有时间的时候这样做,并生成一个可靠的测试用例,以便在所有相关版本的tomcat中修复这个问题

这只发生在使用APR时,所以一个中间解决方案是避免这种情况(但这可能会影响性能)

这就是解决办法。 看看httpd.conf中的这一部分,DefalutType为None很重要。 如果您看到纯文本,这就是问题所在。
抱歉,这个解决方案不是我的,但我不知道我在哪个博客上找到了它:-)

这解决了我的头痛问题。我使用Apache2.2作为前端,mod_proxy_ajp和jboss作为后端。有几笔交易失败了

Message: Client found response content type of 'text/plain; charset=UTF-8', but expected 'text/xml'.
我的Apache确实有
“text/plain”
作为默认类型。但是,我没有在全局级别(httpd.conf)改变这一点。我继续在
配置部分向vhost配置添加了一行新行,将其设置为
text/xml

DefaultType text/xml
我尝试过使用
None
对我不起作用,然后我得到:

'' in the error msg instead of 'text/plain'.

似乎与你的问题有关,这是同一个问题,在这里发布问题之前,我已经找到了一些类似于2007年的邮件存档,但我仍然找不到解决此问题的方法。谢谢。代理人正在与401计划纠缠不休。这管用!
Message: Client found response content type of 'text/plain; charset=UTF-8', but expected 'text/xml'.
DefaultType text/xml
'' in the error msg instead of 'text/plain'.