HTTP Headers 中的 HTTP請求現(xiàn)在我們來看一些在HTTP headers中常見的HTTP請求信息,。 所有這些頭部信息都可以在PHP的$_SERVER數(shù)組中找到,。你也可以用getallheaders() 函數(shù)一次性獲取所有的頭部信息。 Host一個HTTP請求會發(fā)送至一個特定的IP地址,,但是大部分服務(wù)器都有在同一IP地址下托管多個網(wǎng)站的能力,,那么服務(wù)器必須知道瀏覽器請求的是哪個域名下的資源。
這只是基本的主機名,,包含域名和子級域名,。 在PHP中,可以通過$_SERVER['HTTP_HOST'] 或 $_SERVER['SERVER_NAME']來查看,。 User-Agent
這個頭部可以攜帶如下幾條信息:
這就是某些網(wǎng)站用來收集訪客信息的一般手段,。例如,你可以判斷訪客是否在使用手機訪問你的網(wǎng)站,,然后決定是否將他們引導(dǎo)至一個在低分辨率下表現(xiàn)良好的移動網(wǎng)站,。 在PHP中,可以通過 $_SERVER['HTTP_USER_AGENT'] 來獲取User-Agent
Accept-Language
這個信息可以說明用戶的默認語言設(shè)置,。如果網(wǎng)站有不同的語言版本,,那么就可以通過這個信息來重定向用戶的瀏覽器。 它可以通過逗號分割來攜帶多國語言,。第一個會是首選的語言,,其它語言會攜帶一個“q”值,來表示用戶對該語言的喜好程度(0~1),。 在PHP中用 $_SERVER["HTTP_ACCEPT_LANGUAGE"] 來獲取這一信息,。
Accept-Encoding
大部分的現(xiàn)代瀏覽器都支持gzip壓縮,并會把這一信息報告給服務(wù)器,。這時服務(wù)器就會壓縮過的HTML發(fā)送給瀏覽器,。這可以減少近80%的文件大小,以節(jié)省下載時間和帶寬,。 在PHP中可以使用 $_SERVER["HTTP_ACCEPT_ENCODING"] 獲取該信息,。 然后調(diào)用ob_gzhandler()方法時會自動檢測該值,所以你無需手動檢測,。
If-Modified-Since如果一個頁面已經(jīng)在你的瀏覽器中被緩存,,那么你下次瀏覽時瀏覽器將會檢測文檔是否被修改過,那么它就會發(fā)送這樣的頭部:
如果自從這個時間以來未被修改過,,那么服務(wù)器將會返回“304 Not Modified”,,而且不會再返回內(nèi)容。瀏覽器將自動去緩存中讀取內(nèi)容 在PHP中,,可以用$_SERVER['HTTP_IF_MODIFIED_SINCE'] 來檢測,。
還有一個叫Etag的HTTP頭信息,,它被用來確定緩存的信息是否正確,稍后我們將會解釋它,。 Cookie顧名思義,,他會發(fā)送你瀏覽器中存儲的Cookie信息給服務(wù)器。
它是用分號分割的一組名值對,。Cookie也可以包含session id,。 在PHP中,單一的Cookie可以訪問$_COOKIE數(shù)組獲得,。你可以直接用$_SESSION array獲取session變量,。如果你需要session id,那么你可以使用session_id()函數(shù)代替cookie,。
Referer顧名思義, 頭部將會包含referring url信息,。 例如,我訪問Nettuts+的主頁并點擊了一個鏈接,,這個頭部信息將會發(fā)送到瀏覽器: 在PHP中,,可以通過 $_SERVER['HTTP_REFERER'] 獲取該值。
You may have noticed the word “referrer” is misspelled as “referer”. Unfortunately it made into the official HTTP specifications like that and got stuck. Authorization當(dāng)一個頁面需要授權(quán),,瀏覽器就會彈出一個登陸窗口,,輸入正確的賬號后,瀏覽器會發(fā)送一個HTTP請求,,但此時會包含這樣一個頭部:
包含在頭部的這部分信息是base64 encoded。例如,,base64_decode(‘bXl1c2VyOm15cGFzcw==’) 會被轉(zhuǎn)化為 ‘myuser:mypass’ ,。 在PHP中,這個值可以用$_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 獲得,。 更多細節(jié)我們會在WWW-Authenticate部分講解,。 |
|
來自: 流曲頻陽 > 《JAVA學(xué)習(xí)》