2011-10-19 47 views
1

使用cURL訪問文件時,忽略了所述文件中的設置標題。當我通過瀏覽器直接訪問相同的文件而沒有cURL時,它的作品和標題設置正確。任何人都知道這是爲什麼,我如何繞過這個?PHP - 使用cURL時未設置標題

我正在編寫一個API,需要在Web服務中設置HTTP標頭響應,而不是在通過cURL連接到文件的文件中。希望這是有道理的。

非常感謝提前。

+0

請出示你的代碼 – user973254

+0

這是一個很大的代碼很大的項目。我基本上有一個API的每個資源的controller.php文件。在controller.php中,取決於用戶通過cURL發送給API的請求,將會是各種HTTP響應。例如。頭('HTTP/1.1 200 OK');或標頭('HTTP/1.1 401 Unauthorized');但是,通過cURL訪問controller.php時會忽略它們。如果我使用瀏覽器直接訪問controller.php,它就可以工作。 – LeeTee

回答

0

我變薄會幫你

//open connection 
$ch = curl_init(); 


//set the url, number of POST vars, POST data 
curl_setopt($ch,CURLOPT_URL,"URL"); 
curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_setopt($ch,CURLOPT_HTTPHEADER, array('newVar:newValue','Content-type: text/plain', 'Content-length: 100')); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 

//execute post 
ob_clean(); 
$result = curl_exec($ch); 
echo $result; 
curl_close($ch); 
+0

我假設你發佈這個作爲使用CURLOPT_HTTPHEADER傳遞標題信息的例子嗎?如果是這樣,問題是,API的用戶將自己設置cURL,並且我的API需要根據用戶請求更改頭HTTP響應。 – LeeTee

+0

也不清楚。請你解釋一下 – Sreeraj

+0

我不明白你提供的解決方案,哪一點解決了我的問題?你能解釋這將如何解決我的問題嗎?非常感謝,因爲我完全喪失了這一點。 – LeeTee

1

curl_setopt($ch, CURLOPT_HEADER, <true or false>);

可以幫助你。

或者,如果想確切地給出一個HTTP頭,

curl_setopt($ch, CURLOPT_HTTPHEADER,array(<header parameters>)); 

將是一個解決方案。

+0

我需要能夠在用戶進行cURL連接後設置標頭參數,如果有意義的話。所以這個woulode不起作用。或者我誤解了? – LeeTee

1

當您使用捲曲,試試這個作爲你的用戶代理

curl_setopt($c_link, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"); 

curl_setopt($c_link, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 

您也可以複製從Firefox頭這可能是這樣的

$header = "Accept: text/xml,application/xml,application/xhtml+xml,"; 
    $header = "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; 
    $header = "Cache-Control: max-age=0"; 
    $header = "Connection: keep-alive"; 
    $header = "Keep-Alive: 300"; 
    $header = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
    $header = "Accept-Language: en-us,en;q=0.5"; 
    $header = "Pragma: "; 
+0

再次,我需要將標題設置遠離cURL設置。 API的用戶將使用cURL訪問資源,並且我的Web服務需要能夠設置不同的HTTP響應。我不明白firefox的標題如何提供幫助,請詳細說明。謝謝 – LeeTee