2012-10-28 764 views
2

當然,我已經閱讀了這個問題的幾個問題,但我不得不說,它根本不適用於我。我所要做到的是通過CURL發送「X-Requested-With:XMLHttpRequest」和其他頭文件 - 其他方式?

  • 發送「X-要求 - 由於:XMLHttpRequest的」通過PHP頭和捲曲
  • 通過PHP發送其他HTTP請求頭和捲曲

提供的解決方案沒」爲我工作。

我怎麼知道我沒有發送正確的http請求頭?

只需通過

(1)比較受的XMLHttpRequest(觸發JQuery的點擊)以及由PHP和捲曲在Firefox模擬插件直播HTTP頭

(2)的print_r產生真正的標頭()目標腳本中的$ _SERVER變量

我得到的結果不正確/低於我的預期?

首先,也是最重要的: Firefox的活HTTP頭沒有抓住我的頭文件(就像他們不存在)。

二,通過的print_r($ _ SERVER):

,如果我得到的模擬頭部的任何東西,我得到[HTTP_X_REQUESTED_WITH] => XMLHttpRequest - 不是:[X_REQUESTED_WITH] => XMLHttpRequest。 這個問題幾乎對於我通過curl_setopt($ ch,CURLOPT_HTTPHEADER,$ curl_header)發送的任何頭文件依然存在 - 任何頭文件都以'HTTP'('Header1:value1' - 'HTTP_HEADER1')爲前綴。

我使用PHP版本5.4.7,CURL 7.24.0的XAMPP。

之前,我問,如果我想要做到的是可能或可能不會與提前反應表示感謝,這不是壞主意,提供我的代碼 - 的,我試過很多代碼解決方案之一。

$curl_header = array('X-Requested-With: XMLHttpRequest'); 
$data = "name=miloshio"; // just to be sure I'm doing the POST request 
$ch = curl_init('http://example.com/test.php'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_header); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
$result = curl_exec($ch); 
echo $result; 

我的問題和:

  1. 是否可以準確地發送 'X-要求 - 由於:XMLHttpRequest的' 頭通過PHP和捲曲?
  2. 是否可以避免附加'HTTP_'前綴到自定義標頭 由PHP發送和curl?
  3. 在使用PHP和curl的問題上是否存在衆所周知的侷限性?
+0

你的方法幫了我很多。我僞造了一個使用URL和PHP和你的代碼的xmlhttprequest。 +1 –

回答

2
  1. Firefox的活HTTP標頭將不會顯示你的頭,因爲它們可以由服務器發送到另一臺服務器,而不是客戶端(瀏覽器)。

  2. 捲髮正確發送的報頭,使用CURLOPT_PROXY您可以嘗試通過像Fiddler一個調試運行代理把卷曲的流量,如果您使用的是發展的窗口,我敢肯定有Linux的替代品

  3. 如果您嘗試從$ SERVER變量中獲取標題,它們將以HTTP爲前綴,可以使用apache_request_headers獲取不帶HTTP_前綴的標題。

+1

不能更真實。 –