Expect:100-continue

 

在使用curl做POST的時候, 當要POST的數據大於1024字節的時候, curl並不會直接就發起POST請求, 而是會分爲倆步,

  1.   1. 發送一個請求, 包含一個Expect:100-continue, 詢問Server使用願意接受數據
  2.   2. 接收到Server返回的100-continue應答以後, 才把數據POST給Server
  3.  

這是libcurl的行爲.

具體的RFC相關描述: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3

於是,這樣就有了一個問題, 並不是所有的Server都會正確應答100-continue, 比如lighttpd, 就會返回417 “Expectation Failed”, 則會造成邏輯出錯,,

要解決的辦法也挺容易:

  1.  curl_setopt ( $ch , CURLOPT_HTTPHEADER, array ( 'Expect:' ));
  2.                // Disable Expect: header (lighttpd does not support it)
  3.  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章