Transfer-Encoding ist ein HTTP/1.1 hinaus. Diese Version des Protokolls scheint hier relevant zu sein.
Darin heißt es über Content-Length
:
es gesendet werden soll, wenn die Länge der Nachricht vor bestimmt werden kann, zu übertragen, sofern dies nicht durch die Regeln in Abschnitt 4.4 ist verboten.
Dies zeigt deutlich, dass es nicht gesendet werden muss.
Mit Transfer-Encoding
die Standardzustände:
Die Transfer-Encoding für allgemeine Header-Feld gibt an, welche (falls vorhanden) Art der Transformation auf den Nachrichtentext, um angewandt worden, um sicher es zwischen dem Sender zu übertragen und Der Empfänger.
Dadurch kann das Headerfeld weggelassen werden, wenn keine Transfercodierung angewendet wird.
Daraus folgt: beide Header können gültig von einer Antwort fehlen.
In Ihrem Fall curl
sagt, was es tut: Es wartet auf die Remote-Seite, um die Verbindung zu schließen, um zu wissen, dass die Daten vollständig empfangen wurden.
Sie sollten Ihre curl-Flaggen und die entsprechenden Mitteilungen von -v
bieten mehr Einblick in ermöglichen, warum andere Werkzeuge scheinen auf eine bessere Vorstellung davon zu bekommen, warum es keine weiteren Daten vor EOF wurde angetroffen.
wenn andere Kunden, dass für die Nähe, ohne warten zu tun, sie wahrscheinlich eine andere Antwort vom Server erhalten ... –
Der Unterschied zwischen anderen Clients und curl wird, wenn Postbote eine Anforderung sendet, fügt es die Header '" Akzeptieren: */* "," Accept-Encoding: gzip, deflate, sdch "," Akzeptieren-Sprache: en-US, en; q = 0.8 "' Wenn also die Antwort gesendet wird, sendet der Server mit 'Transfer-Encoding '. – user392919