我遇到了端點服務器在發送1024kb後返回'417 Expectation Failed'錯誤的問題。我不相信在請求發送到端點之前,curl會正確地重寫標頭。我正在使用-H標誌並閱讀了許多不同的主題,以包含捲曲手冊頁,試圖瞭解我可能會做錯什麼。curl不覆蓋標題字段
我正在用Perl編寫。這是我如何設置我的標題。
my $curlpath = "/usr/local/bin/curl";
my $xml = #-- yes, xml is really passed but i omitted it
push @curl_vars, "-H 'Content-Type: text/xml; Expect:'"; #-- header flag
push @curl_vars, "-v"; #-- verbose mode
push @curl_vars, "-d"; #-- data flag
push @curl_vars, $xml; #-- data
push @curl_vars, $endpoint;
eval
{
#-- command line execution
open (FILE, "-|") || exec $curlpath, @curl_vars;
$response = join '', <FILE>;
close (FILE);
};
這是來自日誌的修剪捲曲響應。
[Fri Oct 10 16:04:36 2014] > Host: myhost.com\r
[Fri Oct 10 16:04:36 2014] > Accept: */*\r
[Fri Oct 10 16:04:36 2014] > 'Content-Type: text/xml; Expect:'\r
[Fri Oct 10 16:04:36 2014] > Content-Length: 1069\r
[Fri Oct 10 16:04:36 2014] > Content-Type: application/x-www-form-urlencoded\r
[Fri Oct 10 16:04:36 2014] > Expect: 100-continue\r
[Fri Oct 10 16:04:36 2014] > \r
[Fri Oct 10 16:04:36 2014] * HTTP 1.0, assume close after body
[Fri Oct 10 16:04:36 2014] < HTTP/1.0 417 Expectation Failed\r
[Fri Oct 10 16:04:36 2014] < Connection: close\r
[Fri Oct 10 16:04:36 2014] < Content-Length: 18\r
[Fri Oct 10 16:04:36 2014] < \r
按照HTTP規範「與417服務器必須響應,如果任何expections不能得到滿足」。如果ANYTHING出現上傳錯誤,那麼它應該使用錯誤代碼進行響應,但是您只希望/允許100次繼續,所以它必須以417響應。如果它總是在1024kb之後死掉,那麼這強烈建議你超過1meg文件上傳限制,但服務器不能告訴你,因爲你不允許它在@Marc B上 – 2014-10-10 20:19:07
,OP正試圖清除Expect標題。 – ikegami 2014-10-10 21:30:22