rfc1945-http1.0自譯本-(3) (轉)
要解釋的名詞=名詞解釋(name = definition)
規則的名字(name)就是它本身(不帶任何尖括號,“”),後面跟個等號=,然後就是該規則的定義。如果規則需要用多個行來描述,利用空格進行縮排格式排版。某些基本的規則使用大寫,如SP, LWS, HT, CRLF, DIGIT, ALPHA,等等。定義中還可以使用尖括號來幫助理解規則名的使用。
:namespace prefix = o ns = "urn:schemas--com::office" />
字面意思("literal")
文字的字面意思放在引號中間,除非特別指定,該段文字是大小寫敏感的。
規則1|規則2(rule1 | rule2)
“|”表示其分隔的元素是可選的,比如,“是|否”要選擇‘是’或‘否’。
(規則1 規則2)((rule1 rule2))
在圓括號中的元素表明必選其一。如(元素1(元素2|元素3)元素4)可表明兩種意思,即“元素1 元素2 元素4”和“元素1 元素3 元素4”
*規則(*rule)
在元素前加星號“*”表示迴圈,其完整形式是“
[規則]([rule])
方括號內是可選元素。如“[元素1 元素2]”與“*1(元素1 元素2)”是一回事。
N 規則(N rule)
表明迴圈的次數:“
Berners-Lee, et al Informational [Page 9]
#規則(#rule)
“#”與“*”類似,用於定義元素列表。
完整形式是“
空元素在結構中可被任意使用,但不參與元素個數的計數。也就是說,“(元素1),,(元素2)”僅表示2個元素。但在結構中,應至少有一個非空的元素存在。預設值是0到無限,即“#(元素)”表示可取任何數值,包括0;而“1#元素”表示至少有1個;而“1#2元素”表示有1個或2個。
;註釋(; comment)
分號後面是註釋,僅在單行使用。
隱含*LWS(implied *LWS)
本文的語法描述是基於單詞的。除非另有指定,線性空格(LWS)可以兩個鄰近符號或分隔符(tspecials)之間任意使用,而不會對整句的意思造成影響。在兩個符號之間必須有至少一個分隔符,因為它們也要做為單獨的符號來解釋。實際上,應用在產生HTTP結構時,應當試圖遵照“通常方式”,因為現在的確有些實現方式在通常方式下無法正常工作。
2.2 基本規則(Basic Rules)
下面的規則將用於本文後面對結構基本解析。
US-ASCII 編碼字符集定義[17]。
OCTET = <8-bit的順序資料,即bytes>
CHAR = < US-ASCII字元(取值為0 – 127的OCTET)>
UPALPHA = < US-ASCII 大寫字元"A"到"Z">
LOALPHA =
Berners-Lee, et al Informational [Page 10]
ALPHA = UPALPHA | LOALPHA
DIGIT = < US-ASCII 數字"0"到"9">
CTL = < US-ASCII 控制字元(取值0到31的octet )和DEL (127)>
CR =
LF =
SP =
HT =
=
HTTP/1.0規定,除實體主體(Entity-Body,見附錄B容錯應用)外,所有元素的行結束標誌都是CRLF(按位元組順序)。在實體主體內部的行結束標誌定義及其對應的介質型別定義,見3.6節的描述。
CRLF = CR LF
HTTP/1.0的頭可以折成許多行,只要每個後續行以空格或水平製表符開頭。所有的線性空格(LWS),同空格(SP)有相同的語義。
LWS = [CRLF] 1*( SP | HT )
實際上,有些應用並沒有考慮處理這樣多行的頭,所以從相容性上考慮,HTTP/1.0應用最好不要產生折成多行的頭。
TEXT規則只是用於描述訊息直譯器不關心的域的內容及其取值。文字內容可包含不同於US-ASCII的字元。
TEXT =
在標題域中的收件人域如包含US-ASCII字符集以外的字元,這些字元將按照ISO-8859-1標準來解釋。
十六進位制數字型字元在幾個協議元素中到。
HEX = "A" | "B" | "C" | "D" | "E" | "F"
| "a" | "b" | "c" | "d" | "e" | "f" | DIGIT
許多HTTP/1.0頭域的內容由被LWS分隔的單詞或特殊字元組成,這些特殊字元必須置於引號中間的字串內,作為引數值使用。
= 符號(token)| 被引號引起來的字串
Berners-Lee, et al Informational [Page 11]
token = 1*
tspecials = "(" | ")" | "" | "@"
| "," | ";" | ":" | "" |
| "/" | "[" | "]" | "?" | "="
| "{" | "}" | SP | HT
在HTTP頭域中可用括號表示註釋文字。註釋只允許寫在包含註釋的域,做為域值定義的一部分。在除此之外其它域中,括號將被視為域值。
comment = "(" *( ctext | comment ) ")"
ctext =
被雙引號圈中的文字字串將被視為一個單詞。
quoted-string = ( *(qdtext) )
qdtext =
在HTTP/1.0中不允許使用後斜線“”來引用單字元。
3. 協議引數(Protocol Parameters)
3.1 HTTP版本(HTTP Version)
HTTP採用主從(
HTTP訊息的版本由訊息第一行中的HTTP版本域來表示。如果訊息中的協議版本沒有指定,接收方必須假定它是符合HTTP/0.9的簡單標準。
Berners-Lee, et al Informational [Page 12]
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
注意,主從版本應當被看作單獨的整數,因為它們都有可能增加,從而超過一位整數。因而,HTTP/2.4比HTTP/2.13版本低,而HTTP/2.13又比HTTP/12.3版本低。版本號前面的0將被接收方忽略,而在傳送方處也不應產生。
本文件定義了的0.9及1.0版本。傳送完整請求(Full-Request)及完整回應(Full-Response)訊息的應用必須指明HTTP的版本為“HTTP/1.0”。
HTTP/1.0必須:
o識別HTTP/0.9及HTTP/1.0請求命令中的請求佇列(Request-Line)的格式。
o理解任何HTTP/0.9及HTTP/1.0中的合法請求格式。
o 使用與客戶端相同版本的協議進行訊息回應。
HTTP/1.0 客戶端必須:
o 識別HTTP/1.0回應中狀態佇列(Status-Line)的格式。
o 理解HTTP/0.9及HTTP/1.0中合法回應的格式。
當及閘道器收到與其自身版本不同的HTTP請求時,必須小心處理請求的推送,因為協議版本表明傳送方的能力,代理或閘道器不應發出高於自身版本的訊息。如果收到高版本的請求,代理或閘道器必須降低該請求的版本,並回應一個錯誤。而低版本的請求也應在被推送前升級。
代理或閘道器回應請求時必須遵照前面列出的規定。
Berners-Lee, et al Informational [Page 13]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988644/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rfc1945-http1.0自譯本-(4) (轉)HTTP
- rfc1945-http1.0自譯本-(1) (轉)HTTP
- rfc1945-http1.0自譯本-(5) (轉)HTTP
- rfc1945-http1.0自譯本-(7) (轉)HTTP
- rfc1945-http1.0自譯本-(6) (轉)HTTP
- rfc1945-http1.0自譯本-(2) (轉)HTTP
- RFC2617- HTTP Authentication自譯本-(3) (轉)HTTP
- RFC2617- HTTP Authentication自譯本-(2) (轉)HTTP
- RFC2617- HTTP Authentication自譯本-(1) (轉)HTTP
- RFC2617- HTTP Authentication自譯本-(4) (轉)HTTP
- oracle latch_自譯文_(3)Oracle
- GraphJin:GraphQL自動編譯轉為SQL編譯SQL
- 遊戲製作相關---HAM教程翻譯本(五)(轉)遊戲
- 遊戲製作相關---HAM教程翻譯本(四)(轉)遊戲
- Sublime Text3 自動編譯less 的配置編譯
- HTML <!DOCTYPE> (轉自w3school)HTML
- (譯)win32asm例項-3 (轉)Win32ASM
- JS直譯器之自動型別轉換:[]==![]JS型別
- 快速實現語音轉文字,還自帶翻譯
- [譯] 使用 Flutter 製作 3D 翻轉動畫Flutter3D動畫
- life is short 中譯本(粗校)
- 翻譯完了一本書
- Sublime Text3中 less 自動編譯成 css 的方法編譯CSS
- 【譯】box-shadow美化3D轉換效果3D
- [譯] [1] + [2] - [3] === 9!? 型別轉換深入研究型別
- life is short 中譯本(嘗試中)
- [轉] 尋找你的小說座標(之一):挑選譯本的終極攻略!
- [轉]如何使jsp頁面在EBS中自動編譯JS編譯
- SpringAOP本質(3)Spring
- 在RH AS 3上完全編譯安裝BIND-9.2.3(轉)編譯
- unbuntu更新Python3版本到最新,安裝依賴手動編譯Python編譯
- [譯] HTTP/3: 起源HTTP
- 筆記本摔了 (轉)筆記
- Android 自動編譯、打包生成apk檔案 3 - 使用SDK Ant方式Android編譯APK
- 解決一開機就自動開啟記事本的辦法(轉)
- 打算翻譯一本機器學習的書機器學習
- [譯] TensorFlow 教程 #11 - 對抗樣本
- 基於Fedora Core 3的核心編譯的準備工作(轉)編譯