php獲取請求頭數(shù)據(jù) php獲取請求完整的url

php get請求中的請求頭應(yīng)該如何設(shè)置

獲取請求頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼curl_setopt($ch,CURLINFO_HEADER_OUT,true);在curl_exec函數(shù)執(zhí)行后,通過 curl_getinfo($ch,CURLINFO_HEADER_OUT) 來獲取curl執(zhí)行請求的請求數(shù)據(jù)。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)尚義,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

獲取響應(yīng)頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼 curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_NOBODY,true); 之后 通過curl_exec函數(shù)來獲取響應(yīng)頭信息。獲取設(shè)置 curl_setopt($ch, CURLOPT_NOBODY,false);然后對curl_exec獲取的值通過\r\n\r\n進行分割截取第一部分即為響應(yīng)頭信息。

如何在php中獲取curl請求的請求頭信息及相應(yīng)頭信息?

oCurl?=?curl_init();

//?設(shè)置請求頭

$header[]?=?"Content-type:?application/x-www-form-urlencoded";

$user_agent?=?"Mozilla/5.0?(Windows?NT?6.1)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/33.0.1750.146?Safari/537.36";

curl_setopt($oCurl,?CURLOPT_URL,?$sUrl);

curl_setopt($oCurl,?CURLOPT_HTTPHEADER,$header);

//?返回?response_header,?該選項非常重要,如果不為?true,?只會獲得響應(yīng)的正文

curl_setopt($oCurl,?CURLOPT_HEADER,?true);

//?是否不需要響應(yīng)的正文,為了節(jié)省帶寬及時間,在只需要響應(yīng)頭的情況下可以不要正文

curl_setopt($oCurl,?CURLOPT_NOBODY,?true);

//?使用上面定義的?uacurl_setopt($oCurl,?CURLOPT_USERAGENT,$user_agent);curl_setopt($oCurl,?CURLOPT_RETURNTRANSFER,?1?);

//?不用?POST?方式請求,?意思就是通過?GET?請求

curl_setopt($oCurl,?CURLOPT_POST,?false);?$sContent?=?curl_exec($oCurl);

//?獲得響應(yīng)結(jié)果里的:頭大小

$headerSize?=?curl_getinfo($oCurl,?CURLINFO_HEADER_SIZE);

//?根據(jù)頭大小去獲取頭信息內(nèi)容

$header?=?substr($sContent,?0,?$headerSize);

curl_close($oCurl);

如何在php中獲取curl請求的請求頭信息及相應(yīng)頭信息

獲取請求頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼curl_setopt($ch,CURLINFO_HEADER_OUT,true);在curl_exec函數(shù)執(zhí)行后,通過 curl_getinfo($ch,CURLINFO_HEADER_OUT) 來獲取curl執(zhí)行請求的請求數(shù)據(jù)。

獲取響應(yīng)頭信息,可以在curl_exec函數(shù)執(zhí)行前,添加代碼 curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_NOBODY,true); 之后 通過curl_exec函數(shù)來獲取響應(yīng)頭信息。獲取設(shè)置 curl_setopt($ch, CURLOPT_NOBODY,false);然后對curl_exec獲取的值通過\r\n\r\n進行分割截取第一部分即為響應(yīng)頭信息。

php使用nginx如何獲取請求頭?

Nginx的http模塊在處理HTTP請求時對環(huán)境變量的封裝與Apache有所不同。除了支持一些與HTTP協(xié)議相關(guān)的通用的變量之外,還支持一系列Nginx自有的變量,如Nginx配置目錄下fastcgi_params.default文件里的$server_protocol、$nginx_version等。正如這個文件中的示例的用途,這些變量可以在配置fastcgi時傳遞給cgi程序,使其可以作為cgi程序的環(huán)境變量來使用。然而,即便是Nginx有了這些自有的變量也無法完全滿足所有的需求。

了解Jquery的朋友會發(fā)現(xiàn),Jquery在實現(xiàn)Ajax時會通過setRequestHeader(‘X-Requested-With’, ‘xmlhttprequest’)方法自動添加一個值為“xmlhttprequest”自定義的請求頭”X-Requested-With”來標(biāo)識這是一個Ajax請求,以期處理這個請求的后端能夠通過判斷這個標(biāo)識來識別請求類型。那么這個時候PHP是如何來獲取這個自定義參數(shù)的值的呢?

熟悉Apache和PHP的人一定會第一時間想到$_SERVER["HTTP_X_REQUESTED_WITH"],不錯,這對黃金搭配早就把這個問題給完美解決了,但Nginx卻不然,這是由Nginx對其自身工作的定位決定的——Nginx只負(fù)責(zé)HTTP。在Nginx眼里,PHP只是它的一個后端,形象點來說,它只管分發(fā)請求,而不管發(fā)給誰。這就意味著,我們無法期待Nginx像Apache一樣給我們自動完成一些自定義參數(shù)到PHP的傳遞,只有自力更生。簡單點說就是,想要直接像$_SERVER["HTTP_X_REQUESTED_WITH"]這樣來調(diào)用自定義請求頭參數(shù)的值的話,你就必須手工將其添加到fastcgi_params的配置中,明確告知cgi程序接收,否則Nginx會將其遺棄。

配置環(huán)境變量的方法可參照fastcgi_params.default這個文件,在前面的博客“Nginx下虛擬主機環(huán)境變量的配置方法”中也提到過。針對上述例子,只需在fastcgi_params文件中增加一行即可:

?12 # for Ajax fastcgi_param HTTP_X_REQUESTED_WITH $http_x_requested_with;

這樣,重載Nginx配置后就可以之間在PHP中調(diào)用$_SERVER["HTTP_X_REQUESTED_WITH"]來判斷請求類型了。其中需要注意以下兩點:

一、自定義請求頭部的名稱不應(yīng)該包括空白、冒號、換行和下劃線。

Nginx在處理客戶端請求header頭時,會將名稱中的中橫線”-”替換為下劃線”_”,并將所有字母小寫再加上”$http_”來作為該名稱對應(yīng)的變量名。例如上述Jquery的例子中setRequestHeader(‘X-Requested-With’, ‘xmlhttprequest’),在HTTP請求頭中為一行字符串:”X-Requested-With: xmlhttprequest”,經(jīng)Nginx處理后將自動生成一個名為$http_x_requested_with的變量,其值為”xmlhttprequest”。尤其注意中橫線”-”替換為下劃線”_”這個規(guī)則,這意味著請求參數(shù)名稱中如果含有下劃線,Nginx將無法正確識別。

二、$_SERVER["HTTP_X_REQUESTED_WITH"]中的索引,也即“fastcgi_param HTTP_X_REQUESTED_WITH $http_x_requested_with;”中加紅部分,是可以自由命名的,當(dāng)前這種命名格式是為了保持和Apache保持一致。

..

分享文章:php獲取請求頭數(shù)據(jù) php獲取請求完整的url
瀏覽路徑:http://muchs.cn/article6/doeseig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站排名、企業(yè)建站、搜索引擎優(yōu)化、品牌網(wǎng)站建設(shè)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)