我們將在本文中討論在編寫HTTP用戶端或伺服器程式時構造請求和響應訊息所需的一些重要的HTTP協定引數及其語法。將在後續章節中介紹這些引數的完整用法,同時解釋HTTP請求和響應的訊息結構。
HTTP使用<major>.<minor>
編號方案來指示協定的版本。HTTP訊息的版本由第一行中的HTTP-Version
欄位指示。以下是指定HTTP版本號的一般語法 -
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
範例:
HTTP/1.0
# 或者
HTTP/1.1
URI是簡單格式化的,不區分大小寫的字串,包含名稱,位置等以標識資源。例如,網站名稱,Web服務等。用於HTTP的URI的一般語法如下 -
URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
這裡,如果埠(port
)為空或未給出,則預設HTTP為埠80,空的abs_path
等於/
。除保留和不安全集合之外的字元等同於它們的"%"
十六進位制編碼。
範例
以下三個URI是等效的 -
https://www.tw511.com:80/~smith/home.html
http://YIIBAI.com/%7Esmith/home.html
http://YIIBAI.com:/%7esmith/home.html
所有HTTP日期/時間戳必須以格林威治標準時間(GMT)表示。允許HTTP應用程式使用以下三種日期/時間戳表示 -
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
可以使用字元集指定用戶端喜歡的字元集。可以用逗號分隔多個字元集。如果未指定值,則預設為US-ASCII
。
範例
以下字元集有效 -
US-ASCII
# 或者
ISO-8859-1
# 或者
ISO-8859-7
內容編碼值指示在通過網路傳遞內容之前使用編碼演算法對內容進行編碼。內容編碼主要用於允許壓縮文件或以其他方式有用地轉換文件而不會丟失標識。
所有內容編碼值都不區分大小寫。HTTP/1.1
使用Accept-Encoding
和Content-Encoding
檔頭欄位中的內容編碼值。
範例
以下是有效的編碼方案 -
Accept-encoding: gzip
# 或者
Accept-encoding: compress
# 或者
Accept-encoding: deflate
HTTP使用Content-Type
和Accept
檔頭欄位中的網際網路媒體型別,以提供開放和可延伸的資料型別和型別協商。所有媒體型別值都在Internet Assigned Number Authority((IANA)中註冊。以下是指定媒體型別一般語法 -
media-type = type "/" subtype *( ";" parameter )
型別,子型別和引數屬性名稱不區分大小寫。
範例
Accept: image/gif
HTTP使用Accept-Language
和Content-Language
欄位中的語言標記。語言標記由1個或多個部分組成:主要語言標記和可能為空的子標記系列 -
language-tag = primary-tag *( "-" subtag )
標記內不允許使用空格,並且所有標記都不區分大小寫。
範例
範例標籤包括 -
en, en-US, en-cockney, i-cherokee, x-pig-latin
任何兩個字母的主要標籤是ISO-639
語言縮寫,任何兩個字母的初始子標籤是ISO-3166
國家程式碼。