Erhaltung des Content-Type-header von einem Tomcat-HTTP-Antwort gesendet durch einen AJP-connector auf Apache mit mod_proxy
Ich habe ein problem mit einem falschen HTTP-Response Content-Type
header beim Zugriff auf eine Axis2 web service gehostet in Tomcat hinter Apache durch " AJP/1.3-Anschluss.
Kann ich den Zugriff auf den web service, ohne Probleme im browser durch seine RESTful-Schnittstelle und ich kann die Ergebnisse sehen, aber irgendwie Apache ist die änderung der Reaktion Content-Type
header gesendet von Tomcat aus text/xml
zu text/plain
und es hindert mich daran, den Verzehr des web-service über SOAP in NetBeans, weil der eine Unsupported Content-Type: text/plain Supported ones are: [text/xml]
Ausnahme.
Hier ist der relevante Teil meiner Apache-vhosts-Konfiguration:
<VirtualHost *:80>
ServerAdmin [email protected]
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>
Und den entsprechenden Abschnitt meiner Tomcat server.xml:
<Connector port="8009" protocol="AJP/1.3" redirectPort="9443" />
<Connector port="9443" protocol="HTTP/1.1" SSLEnabled="true" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
SSLCertificateFile="path/to/bundle"
SSLCertificateKeyFile="path/to/key"
SSLPassword="S3cr3t"
proxyName="myserver.example" proxyPort="443" />
Wenn ich auf die WS direkt in Tomcat mittels der Standard-connector auf port 8080 bekomme ich die richtige content-type
aber wenn ich auf Sie durch Apache dann bekomme ich text/plain
, also ist es definitiv ein problem mit dem proxy.
Wie kann ich dieses problem lösen?
EDIT: ich habe es zu arbeiten, indem Sie die Tomcat HTTP-connector für das proxying, statt der AJP, aber ich würde es vorziehen, zu verwenden mod_ajp, wenn ich eine funktionierende Lösung.
Ich habe gerade den
ProxyPass ajp://localhost:8009/axis2/services
ProxyPassReverse ajp://localhost:8009/axis2/services
Linien zu
ProxyPass http://localhost:8080/axis2/services
ProxyPassReverse http://localhost:8080/axis2/services
- markmail.org/message/... scheint sich auf Ihr Problem beziehen
- Ja, es ist das gleiche Problem und ich fand bereits einige E-mail-Archive, so wie die von 2007, bevor die Frage hier, aber ich kann immer noch nicht finden, eine Lösung für dieses problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die Lösung.
Betrachten Sie dieses Teil in die httpd.conf, ist Es wichtig, dass DefalutType ist Keine.
Wenn Sie sehen, plain/text, das ist das problem.
Sorry, diese Lösung ist nicht von mir, aber ich dont finden Sie heraus, in welchen blog ich habe es gefunden 🙂
Ich habe in den vergangenen zwei Tagen bei der Arbeit ist das aufspüren von etwas ähnlich wie diese.
Es wurden ein paar bugs produzieren ähnliche Probleme, wie dies in der Vergangenheit, sowohl der Apache HTTPD und Tomcat, aber die meisten scheinen gelöst zu sein, zumindest vor 2 Jahren. Ich denke, das ist, was jemand mit der aktuellen software ist wahrscheinlich zu schlagen - es ist sicherlich das, was ich bin derzeit erleben:
https://issues.apache.org/bugzilla/show_bug.cgi?id=49929
Gibt es vielleicht einen patch, Tomcat 7.x, aber niemand hat es getestet noch.
Ich planen, dies zu tun, wenn ich die Zeit in etwa eine Woche, sowie produzieren eine zuverlässige test-Fall, so kann dies fest in allen relevanten Versionen von tomcat.
Tritt dies nur bei der Verwendung von APR, also eine Zwischenlösung ist, um zu vermeiden, dass (aber das hätte die Leistung auswirken).
Diese lösen Kopfschmerzen für mich. Ich hatte Apache 2.2 als frontend mit mod_proxy_ajp und jboss als backend. Mehrere Transaktionen fehlgeschlagen mit
Meinem Apache habe
'text/plain'
als DefaultType. Ich wusste jedoch nicht, ändern Sie dies auf der globalen Ebene (httpd.conf). Ich fuhr herum und fügte eine neue Zeile in meine vhost config in die<proxy>
config-Abschnitt der Einstellungtext/xml
.Habe ich versuche mit
None
funktionierte nicht für mich, dann bekam ich nur: