Proxy

為什麼 squid 拒絕來自 curl 的這個 multipart-form-data POST?

  • May 28, 2013

這失敗了:

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

帶有 squid 狀態 417 錯誤,ERR_INVALID_REQ.

我從來沒有通過網路瀏覽器在實踐中使用過這個,所以它可能是 curl 使用而不是 squid,但是如果我告訴 curl 不要使用 squid 代理,另一端的網路應用程序會很好地接受它。

(如果有更合適的 StackExchange 站點,請告訴我。)

Squid 不支持 Expect: 100-continue,它是一個 HTTP/1.0 設備。注意響應狀態碼417 Expectation failed

Curl應該自動重試請求,但它不會;相反,您需要抑制 Expect 標頭;例如,

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

或者,您可以將 Squid 配置為簡單地忽略該請求標頭…

在 squid.conf 中添加:ignore_expect_100 on

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

引用自:https://serverfault.com/questions/107813