cURL не удалось на некотором входе. Что ожидать: 100-продолжить?

Возможно, на этот вопрос уже задавали и отвечали много раз, но я не мог найти простых, но всесторонних объяснений. Я не хочу его отключать, пока не пойму проблему. Я в принципе понимаю что Expect: 100 и ждет HTTP1.1 100 Continue выполняется, чтобы позволить другой стороне решить, нуждается ли она в остальной части контента.

Что это и для чего? Я правильно понимаю? Является ли предоставление клиенту возможности контролировать поток данных единственной причиной, почему это делается?

Другой вопрос, почему мой cURL не работает? Это ошибка сервера, которую он отправляет HTTP1.1 200 OK прежде чем клиент отправляет данные?

[george@***** ***]$ curl -X POST -d @test/curl/json/interact.json localhost/api/interact -v
* About to connect() to localhost port 80 (#0)
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
> POST /api/interact HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: localhost
> Accept: */*
> Content-Length: 3854
> Content-Type: application/x-www-form-urlencoded
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Server: nginx/1.9.14
< Date: Tue, 19 Apr 2016 06:49:50 GMT
< Content-Type: application/json
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Frame-Options: SAMEORIGIN
<
* transfer closed with outstanding read data remaining
* Closing connection #0
curl: (18) transfer closed with outstanding read data remaining

Проблема зависит от входного файла, который я использую. cURL не пытается использовать Expect: 100 на небольших файлах:

[george@***** ***]$ curl -X POST -d @test/curl/json/interact-smaller.json
* About to connect() to localhost port 80 (#0)
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 80 (#0)
> POST /api/interact HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: localhost
> Accept: */*
> Content-Length: 21
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 200 OK
< Server: nginx/1.9.14
< Date: Tue, 19 Apr 2016 07:03:55 GMT
< Content-Type: application/json
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Frame-Options: SAMEORIGIN
<
* Connection #0 to host localhost left intact
* Closing connection #0

Это потому, что первый файл больше по размеру?

0 ответов

Другие вопросы по тегам