CURL-request mit 'Connection: close' kann nicht geladen werden alle Inhalte
Ich habe einen server, der die Standardeinstellungen zum senden von HTTP/1.1 Antworten mit "chunked" Daten. Allerdings, wenn ich LOCKE, der server mit "Connection: close" dann scheint es nur zu berichten, die ersten 3-4 Kilobyte an Daten.
Ich habe Kunden, die senden, dass der header - wie kann ich sicherstellen, dass Sie alle Inhalte von nginx + fastcgi, bevor Sie in der Nähe der Verbindung zu meinem server?
curl -v http://example.com -sL -H 'Connection: close'
Hier ist das Beispiel der Konversation curl Datensätze:
user@server:~$ curl -v http://example.com -sL -H 'Connection: close'
* About to connect() to example.com port 80 (#0)
* Trying 111.111.111.111... connected
* Connected to example.com (111.111.111.111) port 80 (#0)
> GET /HTTP/1.1
> Host: example.com
> Accept: */*
> Connection: close
>
< HTTP/1.1 200 OK
< Server: nginx/1.6.2
< Date: Mon, 22 Dec 2014 20:15:33 GMT
< Content-Type: text/html; charset="utf-8"
< Connection: close
< Set-Cookie: PHPSESSID=if5b1f79ml57dogas9aqa3uq20; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Pragma: no-cache
< Access-Control-Allow-Origin: *
< X-Expires-Orig: Thu, 19 Nov 1981 08:52:00 GMT
< Transfer-Encoding: chunked
<
< {...3-4 kbytes of data ....}
<
* Recv failure: Connection reset by peer
* Closing connection #0
- server mit byte-serving, und Sie sind nicht auf die Beantragung der vollen Bandbreite bedient werden...?
Connection: close
hat nichts zu tun mit chunked-transfer, noch würde er dazu führen, dass das Verhalten von Ihr sehen. Ihre Anwendung wird wahrscheinlich senden Sie eine chunked response, ohne richtig die Segmentierung der Daten, wodurch die Verbindung trennen auftreten, nachdem alle Daten gesendet wurde.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn wirklich was passiert, es ist einfach das falsche Verhalten (auf den Server-Namen). RFC 7230 Abschnitt 6.1 sagt
Den Schlüssel dort nach die Antwort ist komplette.
IMHO ist dies curl Fehlverhalten (muss sagen ich mit einem alten curl/7.15.5 die mit RHEL5), können Sie die Problemumgehung, indem Sie in der Mitte einen Apache als proxy-server, es wird ersetzen Sie den Header und das Verhalten wird erwartet.
Sehen https://i.imgur.com/HmBbX2K.png
In meinem environmente es ist auch ein HAProxy server, die können auch stören
Aber es zeigt auch curl als client schließen der Verbindung früh in der DATEN-phase.
Es ist auch kein problem mit SOAP-UI oder anderen Kunden.
Es ist sehr möglich, dass
curl
lief aus allen client-port --netstat -nat
drucken können, die alle den status der Verbindung, und ich Wette, Sie ' ll finden Tonnen vonTIME_WAIT
, was bedeutet, dasscurl
schließen Sie die Verbindung zuerst.