在使用curl做POST的時候, 當要POST的數據大于1024字節的時候, curl并不會直接就發起POST請求, 而是會分為倆步:
發送一個請求, 包含一個Expect:100-continue
, 詢問Server使用愿意接受數據接收到Server返回的100-continue
應答以后, 才把數據POST給Server這是libcurl的行為. 具體的RFC相關描述: http://www.w3.org/PRotocols/rfc2616/rfc2616-sec8.html#sec8.2.3
于是,這樣就有了一個問題, 并不是所有的Server都會正確應答100-continue
, 比如lighttpd, 就會返回417 "Expectation Failed"
, 則會造成邏輯出錯.
要解決的辦法也挺容易:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));// Disable Expect: header (lighttpd does not support it)原文地址:Expect:100-continue
新聞熱點
疑難解答