本章將列出一些重要的HTTP協議參數及其在通信中使用的語法。例如,日期格式、URL格式等。這將幫助您在編寫HTTP客戶端或伺服器程序時構造請求和響應消息。在學習HTTP請求和響應的消息結構時,您將在隨後的章節中看到這些參數的完整用法。
HTTP Version
HTTP使用<major><minor>編號方案來指示協議的版本。HTTP消息的版本由第一行的HTTP版本欄位指示。下面是指定HTTP版本號的一般語法:
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
Example
HTTP/1.0 or HTTP/1.1
Uniform Resource Identifiers
統一資源標識符(Uniform Resource Identifiers,URI)是簡單格式化的,不區分大小寫的字符串,包含名稱、位置等,用於標識資源,例如網站、web服務等。用於HTTP的URI的一般語法如下:
URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
在這裡,如果埠爲空或未給定,則假定埠80用於HTTP,空的abs路徑等於「/」的abs路徑。保留的和不安全的集中的字符以外的字符等效於它們的「%」十六進位編碼。
Example
以下三個uri是等效的:
http://abc.com:80/~smith/home.html http://ABC.com/%7Esmith/home.html http://ABC.com:/%7esmith/home.html
Date/Time Formats
所有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
Character Sets
我們使用字符集來指定客戶機喜歡的字符集。多個字符集可以用逗號分隔。如果未指定值,則默認值爲US-ASCII。
Example
以下是有效的字符集:
US-ASCII or ISO-8859-1 or ISO-8859-7
Content Encodings
內容編碼值表示已使用編碼算法對內容進行編碼,然後再將其通過網絡傳遞。內容編碼主要用於在不丟失標識的情況下對文檔進行壓縮或以其他方式進行有效轉換。
所有內容編碼值都不區分大小寫。HTTP/1.1在Accept Encoding和content Encoding頭欄位中使用內容編碼值,我們將在後面的章節中看到這些值。
Example
以下是有效的編碼方案:
Accept-encoding: gzip or Accept-encoding: compress or Accept-encoding: deflate
Media Types
HTTP在Content Type和Accept頭欄位中使用Internet媒體類型,以便提供開放和可擴展的數據類型和類型協商。所有媒體類型值都在Internet分配號碼機構(IANA)註冊。指定媒體類型的一般語法如下:
media-type = type "/" subtype *( ";" parameter )
類型、子類型和參數屬性名稱不區分大小寫。
Example
Accept: image/gif
Language Tags
HTTP在接受語言和內容語言欄位中使用語言標記。語言標記由一個或多個部分組成:主語言標記和一系列可能爲空的子標記:
language-tag = primary-tag *( "-" subtag )
標記中不允許有空格,並且所有標記都不區分大小寫。
Example
示例標記包括:
en, en-US, en-cockney, i-cherokee, x-pig-latin
其中任何兩個字母的主標記是ISO-639語言縮寫,任何兩個字母的初始子標記是ISO-3166國家代碼。