2011-11-14 39 views
2

首先,我初始化捲曲手柄:如何從curl句柄中刪除先前設置的請求頭referer字段?

$ch = curl_init(); 

接下來,我設置的URL,參考標頭:

curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_REFERER,$referer); 

最後執行語句:

curl_exec($ch); 

現在我可以用另一個URL,而不關閉並重新打開手柄,因此:

curl_setopt($ch,CURLOPT_URL,$another_url); 

這裏頭疼開始了,因爲我不知道如何禁用將發送服務器的引用程序頭,當然我試圖將falsenull放入CURLOPT_REFERER中,但它會導致referer字段爲空,即一個Referer:仍然發送到服務器,但沒有值(這是甚至正確的http規格?)。

是否有任何選項可以在不關閉和重新實施捲曲手柄的情況下完全移除標題?

我想避免它,因爲curl保持連接打開一段時間,如果從同一主機下載時經常關閉句柄,可能需要更多時間。

+0

您是否必須完全刪除標頭? Coudld你不只是將它設置爲你請求的url或者前一個請求中的url? –

+0

是的,我想。有可能是服務器是非常嚴格的,應該在引用者中。到現在我還沒有遇到任何問題,但我提前詢問。問題是,如果這種行爲在http規範方面是正確的? – rsk82

+0

如果一個bug已經填補了,你能告訴我鏈接嗎? – rsk82

回答

1

的Referer標頭應該是完整的URI或URI相對於一個要求:

http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z14

這似乎是一個空白Referer標頭符合規範,所以你可以只:

curl_setopt($ch,CURLOPT_REFERER,''); 

標題仍會出現,但它會爲空。