2010-10-30 43 views
0

我想研究如何發送和接收標頭。如何通過PHP發送和接收標頭

我知道PHP的header函數,我想我可以看看實際的請求頭(例如使用Firebug)並向服務器發出相同的請求(包括欺騙User-Agent)。它是否正確?

另一個問題是如何獲取標題響應?我想分析答覆。

謝謝。

編輯:

@Tatu,這裏是我跑的代碼:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "http://www.google.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0'); 

$result = curl_exec($ch); 
curl_close($ch); 

header('Content-type: text/plain'); 
echo($result); 

回答

3

你可能想看看cURL,這將讓你做出的請求,並設置和檢查頭。 PHP的header只設置當前頁面的標題,不能用它來欺騙用戶代理–這些是服務器設置的標題,因此沒有這種意義。

與自定義標題捲曲請求的基本結構可能是這樣的:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, "Your user agent"); 

$result = curl_exec($ch); 
curl_close($ch); 

$result開頭現在將包含頭文件從服務器接收。

+0

只是爲了澄清,我可以「欺騙」用戶代理使用捲曲,對不對?我只想看看服務器如何響應不同的用戶代理。 – StackOverflowNewbie 2010-10-30 04:43:00

+0

我試過你的代碼,但我沒有得到標題(雖然我得到了實際的文件響應)。我正在編輯我的原始文章,以便我可以向您展示我的代碼。 – StackOverflowNewbie 2010-10-30 05:01:15

+0

@StackOverflowNewbie,你需要將'CURLOPT_HEADER'設置爲1,在我的示例中,我意外地將其設置爲0。 – 2010-10-30 09:19:55

1

如果您想自己發送標題,而不使用cURL,請查看PHP中的套接字。

http://php.net/sockets

+0

你從捲曲畢業後 - 然後插座給你驚人的力量。但是你仍然可以用cURL來做任何事情。 – Xeoncross 2010-10-30 02:36:51

+0

是的,cURL提供了更好的界面,但沒有什麼比原始套接字:-) – Nasir 2010-10-30 02:39:28