我正在爲第三方私有API實現HTTP客戶端。該API需要不使用HTTP Keep-Alive。 libcurl
可以禁用Keep-Alive?即使我設置了CURLOPT_FORBID_REUSE
,它仍然會發送Connection: Keep-Alive
標題並將服務器混淆。如果我手動設置Connection: close
標題,它甚至會發送此標題。在這種情況下,libcurl
會同時發送Connection: Keep-Alive
和Connection: close
HTTP標頭。 有誰知道如何強制libcurl
永不重複使用連接併發送Connection: close
標頭通知服務器它沒有使用連接,或者Connection: Keep-Alive
在libcurl
中硬編碼並且無法更改?是否可以通過libcurl禁用HTTP Keep-Alive?
2
A
回答
1
這可以用CURLOPT_HTTPHEADER
實現:
#include <curl/curl.h>
int main(void) {
CURL *curl = curl_easy_init();
struct curl_slist *list = NULL;
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
list = curl_slist_append(list, "Connection: close");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
curl_easy_perform(curl);
curl_slist_free_all(list);
curl_easy_cleanup(curl);
}
}
至少它的作品在我的Linux。
相關問題
- 1. 可以通過http「禁用」git-clone嗎?
- 2. 是否可以通過編程方式啓用/禁用硬件?
- 3. 是否可以通過使用vc8的SSH支持來編譯libCurl?
- 4. 是否可以通過UITableViewStylePlain在UITableView中禁用浮動標題?
- 5. Flex 4.6 Scroller - 是否可以通過Actionscript暫時禁用滾動?
- 6. 是否可以通過Android SDK或NDK禁用USB端口?
- 7. 是否可以通過擴展來禁用mac gatekeeper?
- 8. 是否可以通過腳本禁用IE Lync插件
- 9. 是否可以通過Android中的拖動禁用滾動ListView?
- 10. 是否可以通過http標頭識別Android應用程序?
- 11. 是否可以通過端口443使用HTTP(NOT HTTPS)?
- 12. 是否可以禁用Controls:HoverButton?
- 13. 是否可以通過查看HTTP流量來查看是否使用了AJAX?
- 14. 是否可以通過SSH使用os.walk?
- 15. 現代瀏覽器是否可以通過UDP支持HTTP
- 16. 是否可以通過UDP傳輸小HTTP數據包?
- 17. 是否可以通過HTML5/jQuery從視頻獲取HTTP標頭?
- 18. 是否可以通過scapy創建HTTP響應
- 19. 是否可以通過http連接到SVN?
- 20. 是否可以通過Zend HTTP Client下載文件?
- 21. 是否可以通過IP地址限制通過HTTP訪問Reporting Services?
- 22. 通過的libcurl
- 23. .net可以知道客戶端是否可以通過HTTP進行SNI功能?
- 24. libcurl中是否有可用的壓縮
- 25. 用戶是否可以禁用html5 sessionStorage?
- 26. 是否可以使用Puppeteer禁用Websocket?
- 27. 是否可以在Apple iOS設備上激活TCP keepalive
- 28. WCF wsHttpBinding與HTTP Keepalive
- 29. 是否可以通過Artifactory禁用對匿名用戶的Web訪問?
- 30. 是否可以在新的SDK中禁用「通過信用卡支付」功能?
我猜要求第三方修復他們的服務器不是一個選項:P – immibis
如果您使用HTTP 1.1,keep alive頭部不會被明確設置;和CURLOPT_FORBID_REUSE確實會終止連接(通過wireshark驗證)。不過,您必須確保在*每個*請求之前設置該值,但這可能是問題所在。 – Petesh