HTTP消息報頭包括普通報頭摘符、請求報頭横辆、響應(yīng)報頭、實體報頭帮辟。每一個報頭域都是由名字+“:”+空格+值 組成速址,消息報頭域的名字是大小寫無關(guān)的。
1 通用信息頭
通用頭域包含請求和響應(yīng)消息都支持的頭域由驹,通用頭域包含Cache-Control芍锚、Connection昔园、Date、Pragma并炮、Transfer-Encoding默刚、Upgrade、Via逃魄。對通用頭域的擴展要求通訊雙方都支持此擴展荤西,如果存在不支持的通用頭域,一般將會作為實體頭域處理伍俘。下面簡單介紹幾個在UPnP消息中使用的通用頭域:
1.Cache-Control頭域
Cache-Control指定請求和響應(yīng)遵循的緩存機制邪锌。在請求消息或響應(yīng)消息中設(shè)置Cache-Control并不會修改另一個消息處理過程中的緩存處理過程。請求時的緩存指令包括no-cache癌瘾、no-store觅丰、max-age、max-stale妨退、min-fresh妇萄、only-if-cached,響應(yīng)消息中的指令包括public咬荷、private冠句、no-cache、no-store幸乒、no-transform懦底、must-revalidate、proxy-revalidate逝变、max-age基茵。各個消息中的指令含義如下:
Public指示響應(yīng)可被任何緩存區(qū)緩存。
Private指示對于單個用戶的整個或部分響應(yīng)消息壳影,不能被共享緩存處理拱层。這允許服務(wù)器僅僅描述當前用戶的整個或部分響應(yīng)消息,此響應(yīng)消息對于其他用戶的請求無效宴咧。
no-cache指示請求或響應(yīng)消息不能緩存
no-store用于防止重要的信息被無意的發(fā)布根灯。在請求消息中發(fā)送將使得請求和響應(yīng)消息都不使用緩存。
max-age指示客戶機可以接收生存期不大于指定時間(以秒為單位)的響應(yīng)掺栅。
min-fresh指示客戶機可以接收響應(yīng)時間小于當前時間加上指定時間的響應(yīng)烙肺。
max-stale指示客戶機可以接收超出超時期間的響應(yīng)消息。如果指定max-stale消息的值氧卧,那么客戶機可以接收超出超時期指定值之內(nèi)的響應(yīng)消息桃笙。
2.Date頭域
Date頭域表示消息發(fā)送的時間,時間的描述格式由rfc822定義沙绝。例如搏明,Date:Mon,31Dec200104:25:57GMT鼠锈。Date描述的時間表示世界標準時,換算成本地時間星著,需要知道用戶所在的時區(qū)购笆。
3.Pragma頭域
Pragma頭域用來包含實現(xiàn)特定的指令,最常用的是Pragma:no-cache虚循。在HTTP/1.1協(xié)議中同欠,它的含義和Cache-Control:no-cache相同。
2 請求頭
1.Host頭域
Host頭域指定請求資源的Intenet主機和端口號横缔,必須表示請求url的原始服務(wù)器或網(wǎng)關(guān)的位置铺遂。HTTP/1.1請求必須包含主機頭域,否則系統(tǒng)會以400狀態(tài)碼返回茎刚。
2.Referer頭域
Referer頭域允許客戶端指定請求uri的源資源地址娃循,這可以允許服務(wù)器生成回退鏈表,可用來登陸斗蒋、優(yōu)化cache等。他也允許廢除的或錯誤的連接由于維護的目的被追蹤笛质。如果請求的uri沒有自己的uri地址泉沾,Referer不能被發(fā)送。如果指定的是部分uri地址妇押,則此地址應(yīng)該是一個相對地址跷究。
3.Range頭域
Range頭域可以請求實體的一個或者多個子范圍。例如敲霍,
表示頭500個字節(jié):bytes=0-499
表示第二個500字節(jié):bytes=500-999
表示最后500個字節(jié):bytes=-500
表示500字節(jié)以后的范圍:bytes=500-
第一個和最后一個字節(jié):bytes=0-0,-1
同時指定幾個范圍:bytes=500-600,601-999
但是服務(wù)器可以忽略此請求頭俊马,如果無條件GET包含Range請求頭,響應(yīng)會以狀態(tài)碼206(PartialContent)返回而不是以200(OK)肩杈。
4.User-Agent頭域
User-Agent頭域的內(nèi)容包含發(fā)出請求的用戶信息柴我。
3 響應(yīng)頭
1.Location響應(yīng)頭
Location響應(yīng)頭用于重定向接收者到一個新URI地址。
2.Server響應(yīng)頭
Server響應(yīng)頭包含處理請求的原始服務(wù)器的軟件信息扩然。此域能包含多個產(chǎn)品標識和注釋艘儒,產(chǎn)品標識一般按照重要性排序。
4 實體頭
1.Content-Type實體頭
Content-Type實體頭用于向接收方指示實體的介質(zhì)類型夫偶,指定HEAD方法送到接收方的實體介質(zhì)類型界睁,或GET方法發(fā)送的請求介質(zhì)類型
2.Content-Range實體頭
Content-Range實體頭用于指定整個實體中的一部分的插入位置,他也指示了整個實體的長度兵拢。在服務(wù)器向客戶返回一個部分響應(yīng)翻斟,它必須描述響應(yīng)覆蓋的范圍和整個實體長度。一般格式:
Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth
例如说铃,傳送頭500個字節(jié)次字段的形式:Content-Range:bytes0-499/1234如果一個http消息包含此節(jié)(例如访惜,對范圍請求的響應(yīng)或?qū)σ幌盗蟹秶闹丿B請求)嘹履,Content-Range表示傳送的范圍,Content-Length表示實際傳送的字節(jié)數(shù)疾牲。
3.Last-modified實體頭
Last-modified實體頭指定服務(wù)器上保存內(nèi)容的最后修訂時間植捎。
例如,傳送頭500個字節(jié)次字段的形式:Content-Range:bytes0-499/1234如果一個http消息包含此節(jié)(例如阳柔,對范圍請求的響應(yīng)或?qū)σ幌盗蟹秶闹丿B請求)焰枢,Content-Range表示傳送的范圍,Content-Length表示實際傳送的字節(jié)數(shù)舌剂。