2016-05-20 5 views
0

Es gibt ein Problem von einem unserer Kunden, der unsere Rest-basierte API verwendet, wenn er eine Post-Anfrage an unseren Server ohne AcceptEncoding HTTP-Header sendet, aber er erhält komprimierte Inhalte im Gegenzug. Ich überprüfte die IIS-Protokolle auf unserem API-Server, der seine Anfrage adressierte, und die auf dem Server empfangene Anfrage wurde mit einem Accept-Encoding (http-Header) geliefert, wie es auf gzip gesetzt ist. Zwischen dem Client-Rechner und unserem Server befinden sich Vermittler (Proxies) und Load-Balancer. Welches Netzwerk-Tracing-Tool sollte ich verwenden, um zu untersuchen, wo dieser HTTP-Header hinzugefügt wird.Netzwerk-Tracing für http-Anfragen

+0

Sie können zuerst eine Liste der Proxies erhalten, die von der Anfrage gekreuzt werden, indem Sie den 'Via'-Header Ihrer Client-Anfrage betrachten. Vielleicht gibt es einen Kommentar vom Proxy, der den Header 'Accept-Encoding' hinzugefügt hat. –

+1

Sie können auch die Payload-Umwandlung vermeiden, indem Sie den Request-Headern Cache-Control: no-transform hinzufügen (siehe [hier] (http://stackoverflow.com/questions/10369679/do-http-proxy-servers-modify) -Request-Pakete)). –

+0

@Jeff Vielen Dank, dass Sie mich in die richtige Richtung weisen, cache-control: no-transform funktioniert für mich, bitte können Sie Ihre Antwort im Antwortbereich posten, damit ich die Antwort akzeptieren kann –

Antwort

1

Eine Lösung, um zu vermeiden, dass eine HTTP-Nachricht komprimiert wird, besteht darin, den Anforderungsheadern Cache-Control: no-transform hinzuzufügen, um eine Änderung der Nutzlast durch Proxies zu vermeiden, wie in RFC 7234 section 5.2.1.6 angegeben.

Auch Via Header kann nützliche Kommentare enthalten, die helfen können, wenn Sie suchen, was jeder Proxy der Anfrage hinzugefügt hat.