2011-11-14 2 views
2

まず、私はカールハンドルを初期化します。以前に設定されたリクエストヘッダー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フィールドが空になりますは依然としてサーバーに送信されますが、値はありません(HTTP仕様でも正しいですか?)。

カールハンドルを閉じたり、元に戻したりせずにヘッダを完全に削除するオプションはありますか?

カールは接続を開いたままにしておきたいのですが、同じホストからダウンロードしている間にハンドルを絶えず閉じると、時間がかかることがあります。

+0

ヘッダー全体を削除する必要がありますか?あなたはあなたが要求しているURLと同じになるように設定するだけでなく、前の要求のURLを設定するだけではありませんか? –

+0

はい、私はしたいと思います。リファラの中に何があるべきか非常に厳しいサーバーが存在する可能性があります。今まで私は何も遭遇していないが、私は事前に尋ねる。そのような振る舞いがHTTP仕様に関して正しいのかという疑問は本当ですか? – rsk82

+0

バグが埋まっている場合は、私にリンクを表示できますか? – rsk82

答えて

6

あなたは後何もせずにそれを渡すことによって、完全にリファラフィールド、または通常のカールが取り扱う他のフィールドを削除することができます「:」CURLOPT_HTTPHEADERへ:

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Referer:")); 

そして、それがすべてでは表示されませんヘッダ。

http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTHTTPHEADER

+0

ああ、さらに良い! –

1

RefererヘッダがフルURIまたは要求された1からの相対URIのいずれかでなければなりません:、それは空白のRefererヘッダのように思える

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

が仕様を満たしているので、あなただけの可能性:

curl_setopt($ch,CURLOPT_REFERER,''); 

ヘッダーは引き続き表示されますが、空白になります。

関連する問題