Gibt es eine Möglichkeit, Fehler zu vermeiden, die für nginx 411 Content-Length erforderlich sind?


11

Ich erhalte einen 411-Status von nginx zurück, wenn ich versuche, einen PUT ohne Angabe der Inhaltslänge durchzuführen. Gibt es eine Möglichkeit, dies zu verhindern?

nginx 

Antworten:



5

PUT-Anforderungen erfordern Content-Length. Es ist nicht Nginx, sondern HTTP, das diese Anforderung stellt. PUT-Anforderungen haben wie POST-Anforderungen notwendigerweise einen Inhaltskörper. Dieser Körper kann eine Länge von Null haben, aber wenn dies der Fall ist, müssen Sie dies ausdrücklich sagen. Natürlich können Sie nicht davon ausgehen, dass der Inhalt fortgesetzt wird, bis die Verbindung geschlossen wird (was ein fehlender Header mit Inhaltslänge impliziert), da der Server in der Lage sein muss, auf die Anforderung zu antworten, bevor die Verbindung geschlossen wird.


3
Das ist falsch. w3.org/Protocols/rfc2616/rfc2616-sec4.html "Das Vorhandensein eines Nachrichtentexts in einer Anforderung wird durch die Aufnahme eines Headerfelds für Inhaltslänge oder Übertragungscodierung in die Nachrichtenkopfzeilen der Anforderung signalisiert." Dies ist ein Fehler in Nginx, der in neueren Versionen behoben wurde. Beachten Sie, dass dieser Fehler für POST lange vor PUT behoben wurde.
Nick Palmer

2

Alte Frage, aber da ich von einer Websuche darauf gestoßen bin:

NginX 1.3.9 und höher unterstützt "Transfer-Encoding: Chunked" für POST und PUT.

Mit Chunked Transfer können Sie Dateien senden, ohne zuerst die Länge des Inhalts festzulegen.


Ja, das hat es behoben, danke!
Rogerdpack
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.