Назад | Перейти на главную страницу

Почему squid отклоняет этот POST-запрос с несколькими формами данных из curl?

Это не удается:

$ curl --trace multipart-fail.log -F "source={}" http://127.0.0.1:3003/jslint

С ошибкой squid status 417, ERR_INVALID_REQ.

У меня никогда не было этого на практике через веб-браузер, поэтому, вероятно, это использование curl вместо squid, но если я скажу curl не использовать прокси-сервер squid, веб-приложение на другом конце прекрасно это примет.

(Если для этого есть более подходящий сайт StackExchange, дайте мне знать.)

Squid не поддерживает Expect: 100-continue, будучи устройством HTTP / 1.0. Обратите внимание на код состояния ответа 417 Expectation failed.

Завиток должен повторить запрос автоматически, но этого не происходит; вместо этого вам нужно подавить заголовок Expect; например.,

curl -H "Expect:" --trace multipart-fail.log -F "source={}" http://127.0.0.1:3003/jslint

В качестве альтернативы вы можете настроить Squid, чтобы он просто игнорировал этот заголовок запроса ...

Добавьте в squid.conf: ignore_expect_100 на

http://www.squid-cache.org/Doc/config/ignore_expect_100/

Для тех, кто сталкивается с этим вопросом и сталкивается с той же проблемой с cURL в PHP (не в командной строке), попробуйте добавить эту строку:

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

У меня это сработало.

Спустя долгое время я исправил эту проблему следующим образом ..

//proxy server address
        $proxyServer="192.168.43.201";
//Proxy server port
        $proxyPort="3128";

     curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
     curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
     curl_setopt($ch, CURLOPT_PROXY, "$proxyServer:$proxyPort");

Reff: http://djzone.im/2010/05/php-curl-ntlm-squid-proxy-authentication/

Надеюсь, это кому-то поможет ...