2012-10-09 15 views
5

HTTP 1.1 heißt es: Kann Tomcat HTTP 1.1-Anfragen ohne Host-Header akzeptieren?

jedoch „Ein Client muss in allen HTTP/1.1-Anforderungsnachrichten einen Host-Header-Feld umfassen“, die Maschinen, die ich auf genau dieses POST (die Koordinaten) auszusenden arbeite, die ich nicht tun haben Zugang zu ändern:

POST /touch HTTP/1.1 
Content-type: application/x-www-form-urlencoded 
Content-Length: <n> 

x=<int x>&y=<int y> 

Tomcat 7 sofort mit 400 Bad Request aufgrund des Fehlens eines Host-Header-Feld reagiert, und das POST wird nie zu meinem Servlet. Gibt es eine Möglichkeit, diese Fehlerantwort zu vermeiden und den POST mit dem Servlet zu behandeln, um diese älteren Maschinen zu unterstützen?

Antwort

4

Wie Sie bereits erwähnt, HTTP 1.1 spec says (fett von mir):

Ein Client muss ein Host-Header Feld in allen HTTP umfassen/1.1 Anforderungsnachrichten. [...] Ein HTTP/1.1-Proxy MUSS sicherstellen, dass jede weitergeleitete Anforderungsnachricht ein entsprechendes Host-Header-Feld enthält, das den vom Proxy angeforderten Service identifiziert. Alle Internet-basierten HTTP/1.1-Server müssen mit einem Statuscode 400 (Bad Request) auf alle HTTP/1.1-Anfragenachrichten antworten, die kein Host-Header-Feld enthalten.

Der Client verwendet HTTP 1.1 Protokoll falsch, Sie sollten nicht versuchen, das auf der Serverseite zu umgehen. Sie können einen benutzerdefinierten HTTP-Proxy einrichten, der nur den Header Host hinzufügt. Aber das ist ein dreckiger Workaround. Alternativ können Sie das Protokoll auf 1.0 herabstufen.

Auch wenn Sie es irgendwie schaffen, Tomcat dazu zu bringen, solche Anfragen zu akzeptieren (was gegen die Spezifikation ist), werden Sie trotzdem einige Probleme bekommen, wenn ein HTTP-Proxy zwischen Enden ist.

+0

Dies ist für ein Test-Tool bei der Arbeit, so dass Zwischenproxys kein Problem sind. Ich würde lieber mit Tomcat arbeiten, wie mit einem Filter oder einem Ventil, anstatt einen Proxy einzurichten, aber ich glaube nicht, dass das Ventil die Anfrage abfangen kann, bevor sie abgelehnt wird. – user1684196