簡體   English   中英

使用代理時php-curl標頭大小不正確

[英]php-curl incorrect header size when use proxy

這段代碼:

$headersSize     = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$responseHeaders = substr($response, 0, $headersSize);
$responseBody    = substr($response, $headersSize);

返回錯誤的標題大小(strlen),例如:

...
Pragma: no-cache
Set-Cookie: foo=bar; pat

 ---- curl want split here ---- 

h=/
Access-Control-Allow-Origin: *

<!DOCTYPE html ...

響應可以具有多個標頭(重定向,繼續等)。 當然,這不是工作:

list($header, $body) = explode("\r\n\r\n", $response, 2);

如何正確確定標題的大小?

可能與此有關: https : //bugs.php.net/bug.php?id=63894&edit=1http://sourceforge.net/p/curl/bugs/1204

該修復程序是commit bc6037e,它進入了curl 7.30.0

無論如何,這是一個錯誤。 此錯誤之后的任何修復都是不可靠的。

知道它是如何工作的,您可以手動將標題的長度加/減一定的數量,只看它丟失了多少即可。

或者,如果代理僅用於HTML,則可以手動解析字符串,直到獲得以HTML標記開頭的行,該行就是標題的結尾。

抱歉,但是除了從源頭修復此錯誤之外,我沒有看到可靠的解決方案。 如果可以,則可以更新curl,libcurl或其他任何內容。 或者,如果您對版本敏感,則可以從git中提取該版本,修復此錯誤,然后重新編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM