这失败了:
$ curl --trace multipart-fail.log -F "source={}" http://127.0.0.1:3003/jslint
带有 squid 状态 417 错误,ERR_INVALID_REQ
.
- curl请求失败的痕迹
- 使用 urlencoding (curl -d) 而不是 multipart (curl -F)的成功 curl 请求的跟踪
- squid 错误信息的格式化版本
我从来没有通过网络浏览器在实践中使用过这个,所以它可能是 curl 使用而不是 squid,但是如果我告诉 curl 不要使用 squid 代理,另一端的网络应用程序会很好地接受它。
(如果有更合适的 StackExchange 站点,请告诉我。)
Squid 不支持 Expect: 100-continue,它是一个 HTTP/1.0 设备。注意响应状态码
417 Expectation failed
。Curl应该自动重试请求,但它不会;相反,您需要抑制 Expect 标头;例如,
或者,您可以将 Squid 配置为简单地忽略该请求标头...
在 squid.conf 中添加:ignore_expect_100 on
http://www.squid-cache.org/Doc/config/ignore_expect_100/
对于任何偶然发现这个问题并且在 PHP(不是命令行)中遇到 cURL 相同问题的人,请尝试添加以下行:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
它对我有用。
很长一段时间后,我通过以下方式解决了这个问题..
参考: http ://djzone.im/2010/05/php-curl-ntlm-squid-proxy-authentication/
希望这可以帮助某人...