Frage

Ich mache eine HTTP-Verbindung zu einem IIS-Webserver und eine POST-Anforderung mit den Daten zu senden Transfer-Encoding codiert mit: gestückelt. Wenn ich das tue, IIS schließt einfach die Verbindung, ohne Fehlermeldung oder Statuscode. Nach dem HTTP 1.1-Spezifikation ,

  

Alle HTTP / 1.1-Anwendungen müssen in der Lage der „gestückelt“ Transfer-Codierung

zu empfangen und zu dekodieren

so verstehe ich nicht, warum es (a) nicht, daß die Codierung der Handhabung und (b) es sendet keinen Statuscode zurück. Wenn ich den Antrag ändern, um den Content-Length statt Transfer-Encoding zu senden, die Abfrage erfolgreich ist, aber das ist nicht immer möglich.

Wenn ich die gleiche Sache gegen Apache versuchen, erhalte ich eine „411 Länge erforderlich“ -Status und eine SMS-Nachricht: „chunked Transfer-Encoding verboten“.

Warum diese Server nicht diese Codierung unterstützen?

War es hilfreich?

Lösung

Mein Verständnis ist, dass aufgeteilte Codierung kann nur in einer HTTP-Antwort verwendet werden. Ein segmentierte Anfrage Körper würde die Eigenschaft besitzt, mit einem 1.0-Server nicht kompatibel ist, und in jedem Fall gäbe es keine Möglichkeit eines User-Agenten sein, zu wissen, dass der Server ein 1.0-Server war, bis er hatte bereits die Anfrage gesendet.

Aber ich stimme es aus der Dokumentation unklar ist.

Andere Tipps

Werfen Sie einen Blick auf Ihre Kunden.

Sowohl IIS & Apache Anfragen Unterstützung POST chunked Transfer-Encoding. Sie können dies überprüfen Sie die rel="noreferrer">:

curl <upload-url> --form "upfile=@<local_file>" --header "Transfer-Encoding: chunked"

Überprüfen Sie, ob die Übertragung gestückelt wird mit Wireshark

Es geht in beiden Richtungen. versuchen, ein Bild 2MB ++ zu photobucket Hochladen und aufzeichnen. ihre Uploader Uploads zu ihrem Apache-Server gestückelt.

Meine einzige Vermutung ist, sie es nicht umgesetzt habe aus Sorge um die Sicherheit. In einer naiven Lösung wäre es leicht, einen DoS-Angriff durch das Starten mehrere chunked Transfers einrichten, die nie zu Ende gehen. Und eine komplexe Lösung, die für die DoS-Attacke Konto könnte, ist wahrscheinlich nicht die Mühe wert.

Natürlich kann ich für Apache oder IIS nicht sprechen, können Sie in der Lage sein, das Apache-Teams direkt durch Kontakt: http://httpd.apache.org/bug_report.html

ich mit MarkR darüber einig, dass ich immer gedacht, aufgeteilte Codierung nur als Antwort verwendet werden könnte, aber die Dokumentation sicher macht es klingen wie es in einer Anfrage oder eine Antwort verwendet werden kann.

Dieser Befehl kam für mich zu retten!

  

C: \ Windows \ System32 \ Inetsrv \ Appcmd.exe set config -Abschnitt: httpCompression
    - [name = 'gzip'] staticCompressionLevel. 9 - [name = 'gzip'] dynamicCompressionLevel. 4

meinen Tag gerettet ... hoffen, dass es jemanden wie mir hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top