PHP POST HTTP перестал работать когда ВИХРЕВЫЕ данные> 1024

Похоже, вы ищете returnKeyType и клавиатураType

11
задан Jeff Atwood 18 May 2009 в 04:04
поделиться

3 ответа

Можно убедить, что вихревой бэкенд PHP, чтобы прекратить делать эти 100 продолжает вещь путем установки явного заголовка запроса:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));

Таким образом, можно отправлять запрос однако долго, Вы когда-либо хотели бы, и завихрение не сделает двойного сообщения фазы.

Я вел блог об этом почти два года назад.

22
ответ дан 3 December 2019 в 04:14
поделиться

Первые мысли...

В странице руководства для curl_setopt говорится относительно CURLOPT_POSTFIELDS

"Полные данные для регистрации в операции "POST" HTTP. Для регистрации файла предварительно ожидайте имя файла с и используйте полный путь. Это может или быть передано как строка urlencoded как 'para1=val1&para2=val2&...' или как массив с именем поля, столь же ключевым и полевые данные как значение".

Могло случиться так, что Ваше значение рассматривают, как будто это был urlencoded, и таким образом похож на большое длинное имя без значения. Что-то где-нибудь решает усечь то имя.

Возможно, Вы могли изменить его к чему-то как

$post_data = "data=".str_repeat('x', $char_count);

Оказывается, что это было слишком легко, и проблема была немного глубже. Так, как отладить?

Узнайте точно, что ЗАВИХРЕНИЕ отправляет на сервер

Другая тактика отладки могла бы быть должна сформулировать вихревую командную строку, которая достигает того же самого, и имейте его, произвел детали Запроса HTTP, поскольку это делает их.

Тестирование сервера вручную

Можно устранить сервер из уравнения, выполняют запрос вручную, например, telnetting для портирования 80 на сервере и отправке его запрос> 1 024 символа

POST /test/recipient.php HTTP/1.0
Host: gpx3quaa.joyent.us
Content-Length:1028

xxxxx(I put 1028 chars here, no point copying them all here!)

Я получил этот ответ

HTTP/1.0 200 OK
Connection: close
Content-type: text/html; charset=UTF-8
Content-Length: 19
Date: Tue, 20 Jan 2009 21:35:16 GMT
Server: lighttpd/1.4.19

This was a triumph.Connection closed by foreign host.

Так, по крайней мере, Вы теперь знаете, что это - все на стороне клиента, возможной некоторая опция CURL или параметр конфигурации где-нибудь :(

Окончательный ответ!

Проблема заинтриговала меня так, я вырыл глубже

Если Вы используете CURLOPT_VERBOSE=>true, Вы будете видеть, что ЗАВИХРЕНИЕ отправляет дополнительный заголовок на больших сообщениях:Expect: 100-Continue. Вашему lighttpd серверу не нравится это, это казалось бы.

Можно мешать ЗАВИХРЕНИЮ делать это, вынуждая это использовать HTTP/1.0 с CURLOPT_HTTP_VERSION=>CURL_HTTP_VERSION_1_0 в Вашем curl_setopt массиве options.

3
ответ дан 3 December 2019 в 04:14
поделиться

У меня была похожая проблема с сервером IIS, использующим SSL v3.

Я продолжал получать следующую ошибку cURL, когда CURLOPT_POSTFIELDS было больше 1024:

52 - SSL read: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number, errno 0

Добавление CURLOPT_HTTPHEADER: «Ожидается: «Решил проблему для меня.

Большое спасибо за эту тему!

0
ответ дан 3 December 2019 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: