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