有關php檔案頭部資訊(header)的詳細介紹,是程式設計師之家見過的最詳細的一篇,有需要的朋友,千萬不要錯過這麼好的文章。
php文件頭資訊詳解。 1. Accept:告訴WEB伺服器自己接受什麼媒體類型,*/* 表示任何類型,type/* 表示該類型下的所有子類型,type/sub-type。 2. Accept-Charset: 瀏覽器申明自己接收的字元集 Accept-Encoding: 瀏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支援壓縮,支援什麼壓縮方法(gzip,deflate) Accept-Language::瀏覽器申明自己接收的語言語言跟字符集的區別:中文是語言,中文有多種字符集,比如big5,gb2312,gbk等等。 3. Accept-Ranges:WEB伺服器表示自己是否接受取得其某個實體的一部分(例如檔案的一部分)的請求。 bytes:表示接受,none:表示不接受。 4. Age:當代理伺服器用自己快取的實體去回應請求時,用該頭部表示該實體從產生到現在經過多長時間了。 5. Authorization:當客戶端接收到來自WEB伺服器的 WWW-Authenticate 回應時,用該頭部回應自己的驗證訊息給WEB伺服器。 6. Cache-Control:請求:no-cache(不要快取的實體,要求現在從WEB伺服器去取) max-age:(只接受 Age 值小於 max-age 值,且沒有過期的物件) max-stale:(可以接受過去的對象,但是過期時間必須小於max-stale 值) min-fresh:(接受其新鮮生命期大於其目前 Age 跟 min-fresh 值總和的快取物件) 回應:public(可以用 Cached 內容回應任何使用者) private(只能用快取內容回應先前請求該內容的那位使用者) no-cache(可以緩存,但是只有在跟WEB伺服器驗證了其有效後,才能返回給客戶端) max-age:(本回應所包含的物件的過期時間) ALL: no-store(不允許快取) 7. Connection:請求:close(告訴WEB伺服器或代理伺服器,在完成本次請求的回應後,斷開連接,不要等待本次連接的後續請求了)。 keepalive(告訴WEB伺服器或代理伺服器,在完成本次請求的回應後,保持連接,等待本次連接的後續請求)。 回應:close(連線已經關閉)。 keepalive(連線保持著,在等待本次連線的後續請求)。 Keep-Alive:如果瀏覽器請求保持連接,則該頭部表示希望 WEB 伺服器保持連接多長時間(秒)。 例如:Keep-Alive:300 8. Content-Encoding:WEB伺服器表示自己使用了什麼壓縮方法(gzip,deflate)會壓縮回應中的物件。 例如:Content-Encoding:gzip Content-Language:WEB 伺服器告訴瀏覽器自己回應的物件的語言。 Content-Length: WEB 伺服器告訴瀏覽器自己回應的物件的長度。 例如:Content-Length: 26012 Content-Range: WEB 伺服器表示該回應所包含的部分物件為整個物件的哪個部分。 例如:Content-Range: bytes 21010-47021/47022 Content-Type: WEB 伺服器告訴瀏覽器自己回應的物件的類型。 例如:Content-Type:application/xml 9. ETag:就是一個物件(例如URL)的標誌值,就一個物件而言,例如一個html 文件,如果被修改了,其Etag 也會別修改, 所以,ETag 的作用跟Last-Modified的作用差不多,主要供WEB 伺服器判斷一個物件是否改變了。例如前一次請求某個html 檔案時,獲得了其ETag,當這次又請求這個檔案時,瀏覽器就會把先前獲得的ETag 值發送給WEB 伺服器,然後WEB 伺服器會把這個ETag 跟著這個檔案的目前ETag 進行對比,然後就知道這個檔案有沒有改變了。 10. Expired:WEB伺服器顯示該實體將在什麼時候過期,對於過期了的對象,只有在跟WEB伺服器驗證了其有效性後,才能用來回應客戶請求。是 HTTP/1.0 的頭部。例如:Expires:Sat, 23 May 2009 10:02:12 GMT 11. Host:客戶端指定自己想存取的WEB伺服器的網域名稱/IP 位址和連接埠號碼。 例如:Host:rss.sina.com.cn 12. If-Match:如果物件的 ETag 沒有改變,其實也就代表物件沒有改變,才執行請求的動作。 If-None-Match:如果物件的 ETag 改變了,其實也就代表物件也改變了,才執行請求的動作。 13. If-Modified-Since:如果請求的物件在該頭部指定的時間之後修改了,才執行請求的動作(例如返回物件),否則傳回代碼304,告訴瀏覽器該物件沒有修改。 例如:If-Modified-Since:Thu, 10 Apr 2008 09:14:42 GMT If-Unmodified-Since:如果要求的物件在該頭部指定的時間之後沒修改過,才執行請求的動作(例如返回物件)。 14. If-Range:瀏覽器告訴 WEB 伺服器,如果我請求的物件沒有改變,就把我缺少的部分給我,如果物件改變了,就把整個物件給我。 瀏覽器透過發送請求物件的ETag 或 自己所知道的最後修改時間給 WEB 伺服器,讓其判斷物件是否改變了。總是跟 Range 頭部一起使用。 15. Last-Modified:WEB 伺服器認為物件的最後修改時間,例如檔案的最後修改時間,動態頁面的最後產生時間等等。例如:Last-Modified:Tue, 06 May 2008 02:42:43 GMT 16. Location:WEB 伺服器告訴瀏覽器,試圖存取的物件已經被移到別的位置了,到該頭部指定的位置去取。 17. Pramga:主要使用 Pramga: no-cache,相當於 Cache-Control: no-cache。 例如:Pragma:no-cache 18. Proxy-Authenticate: 代理伺服器回應瀏覽器,要求其提供代理驗證資訊。 Proxy-Authorization:瀏覽器回應代理伺服器的驗證請求,提供自己的身份資訊。 19. Range:瀏覽器(例如 Flashget 多執行緒下載時)告訴 WEB 伺服器自己想取物件的哪一部分。 例如:Range: bytes=1173546- 20. Referer:瀏覽器向 WEB 伺服器表明自己是從哪個 網頁/URL 取得/點擊 目前請求中的網址/URL。 例如:Referer:http://www.sina.com/ 21. Server: WEB 伺服器顯示自己是什麼軟體及版本等資訊。 例如:Server:Apache/2.0.61 (Unix) 22. User-Agent: 瀏覽器表示自己的身分(是哪一種瀏覽器)。 例如:User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14 23. Transfer-Encoding: WEB 伺服器表示自己對本回應訊息體(不是訊息體內的物件)作了怎樣的編碼,例如是否分割(chunked)。 例如:Transfer-Encoding: chunked 24. Vary: WEB伺服器用該頭部的內容告訴 Cache 伺服器,在什麼條件下才能用本回應所傳回的物件回應後續的請求。假如來源WEB伺服器在接到第一個請求訊息時,其回應訊息的頭部為: Content-Encoding: gzip; Vary: Content-Encoding 那麼Cache 伺服器會分析後續要求訊息的頭部,檢查其Accept-Encoding,是否跟先前回應的Vary 頭部值一致,即是否使用相同的內容編碼方法,這樣就可以防止Cache 伺服器用自己Cache 裡面壓縮後的實體回應給不具備解壓縮能力的瀏覽器。 例如:Vary:Accept-Encoding 25. Via: 列出從客戶端到 OCS 或相反方向的回應經過了哪些代理伺服器,他們用什麼協定(和版本)發送的請求。當客戶端請求到達第一個代理伺服器時,該伺服器會在自己發出的請求裡面添加Via 頭部,並填上自己的相關信息,當下一個代理伺服器收到第一個代理伺服器的請求時,會在自己發出的請求裡面複製前一個代理伺服器的請求的Via 頭部,並把自己的相關信息加到後面, 以此類推,當OCS 收到最後一個代理伺服器的請求時,檢查Via 頭部,就知道該請求所經過的路由。 例如:Via:1.0 236-81.D07071953.sina.com.cn:80 (squid/2.6.STABLE13)。 學完了理論知識,大家可以參考下腳本學堂介紹的一些根據文件頭判斷文件類型的文章,理論與實戰相結合。 您可能有興趣的文章: php header()函數範例 php header函數實作檔下載 php中header函數的用法 php 檔案下載類別(header頭資訊的應用實例) php header 使用詳解 php header函數 檔案下載時直接提示儲存的程式碼 php header頭資訊舉例 PHP中HEADER頭訊息詳解 php header函數要點 |