ıЭ-HTTP/1.1


˵
   ĵ涨˻ı׼Э, ҪۺͽԱ. ο
ٷЭ׼(STD 1)˽ⱾЭı׼״̬. Э鲻. 

Ȩ
   Copyright (C) The Internet Society (1999).          All Rights Reserved.
Copyright  www.cnpaf.net (2007).          All Rights Reserved.

ժҪ

ıЭ(HTTP)һΪֲʽ, ʽ, ýϢϵͳ, 
ӦòЭ. һͨõ, ״̬(stateless)Э, Ʒͷֲϵͳ֮ĳı;, ͨչʽ, ͱͷ[47]
. HTTPһصݱʾʽĵԺͿЭڴ
ϵͳ. 
HTTP1990WWWȫϢո𲽵ʱ͵õӦ. ˵ϸHTTP/1.1
Э, RFC 2068޶[33]. 

Ŀ¼()

1 

1.1 Ŀ

ıЭ(HTTP)һΪֲʽ, ʽ, ýϢϵͳ, Ӧò
Э. 1990WWWȫϢո𲽵ʱHTTP͵õӦ. HTTPĵһ汾HTTP/0.9, һΪԭʼݴļЭ. RFC 1945[6]HTTP/1.0һЭ. ϢMIMEĸʽ, йݴάϢ͹/Ӧľ䷨. , HTTP/1.0ûгֿǵֲ, ٻԼȶӺ. ŲƵĽӦõļ, HTTP/1.0Ҫһµİ汾, ԱʹͨӦóܹȷ˴˵ʵ. 

涨ЭHTTP/1.1".ЭHTTP/1.0, ҪΪϸ, ȷܵõɿʵ. 

ʵʵϢϵͳ˼򵥵ļ, ҪĹ(functionality), (search), ǰ˸(front-end update)ע(annotation). HTTPķͱͷָʾĿ[47]. ǽͳһԴʶ(URI)[3]ṩĵַ(URL)[4](URN)[20], ָӦĸԴ. Ϣһֽ;ʼչ(MIME)[7] Ļʼĸʽ. 

HTTPҲû֮估/صϵͳͨͨЭ, ϵͳSMTP[16], NNTP[13], FTP[18], Gopher[2]WAIS[10]Э֧. , HTTPͬӦóԴлĳý. 

1.2 Ҫ

ĵĹؼ"MUST",  "MUST NOT",  "REQUIRED",  "SHALL", "SHALL NOT", "SHOULD", 
"SHOULD NOT",  "RECOMMENDED",  "MAY",   "OPTIONAL"RFC 2119[34]. 

һЭṩһMUSTREQUIREDȼҪ, ǲҪ. һMUSTREQUIREDȼԼSHOULDȼҪ, 򱻳ΪԷϡ(unconditionally compliant)ģMUSTȼҪ󵫲SHOULDȼҪ򱻳Ϊַϡ(conditionally compliant). 

1.3 

˵õ, ԱʾHTTPͨиߺͶݵĲͬɫ. 

(Connection)
ΪͨŶ佨Ĵ·. 

Ϣ(Message)
HTTPͨеĻԪ. һṹİ˱ֽ, 4¶ľ䷨ƥ, ͨӵõ. 
  
(Request)
һHTTPϢ, ο5µĶ. 
  
Ӧ(Response)
һHTTPӦϢ, ο6µĶ. 

Դ(Resource)
һݶ, õ3.2ڶURI. ԴԶֱַʽ
(, ݸʽ, Сͽ)ͬ;. 

ʵ(Entity)
ΪӦЧɶϢ.һʵͷʽάϢϢʽ, ɵ7.

ʾ(Representation)
һӦʵЭ̾, 12.һضӦ״̬Ӧıʾж.
  
Э(Content Negotiation)
ΪʱѡʵʾĻ(mechanism), 12.κӦʵıʾǿЭ̵(Ӧ).

(Variant)
κθʱ, һԴӦıʾһ.ÿʾһ.ʹñﲢȻζԴЭ̾.

ͻ(Client)
Ϊӵĳ.

û(User agent)
ʼĿͻ˳., ༭, ֩(紩Խ), նû.

(Server)
ͬԱͨӦΪṩӦó.κθĳпԼͻ;ʹЩָضгɵ, ָͨϳ.ͬ, κηԻÿʰԭ, , , ɫ֮һ. 

ԭ(Origin server)
Դפ򴴽ĵط.
  
( Proxy)
һͻ˵н., ;Ǵͻ.ڲõ, ߾һķת.һͬʱб˵пͻ˺ͷҪ.͸(transparent proxy)һֳ˱֤ͼⲻ޸ӦĴ.͸(non-transparent proxy)һ޸ӦԱΪûṩӷĴ, ӷעͷ, ýת, Э, ˳.Ǿȷָ, HTTPҪִ.

(gateway)
Ϊ䵱нķ.ͬ, ؽ, ·ǱԴڵԭ;Ŀͻܾ첻ͬͨ.
һ֮䵱äĿм(blind relay)м.һЧ, 㲻ٱΪHTTPͨŵû, ȻѾHTTPʼ.˵мӶرյʱ, ٴ.

ٻ(Cache)
һӦϢıش洢ͿƴϢ洢ɾϵͳ, һٻ洢洢ӦΪǼٶԽͬӦʱ, һͻܰһٻ, ٻ治Ӧһ䵱ķ.

ɻ(Cacheable)
       һٻ洢ӦϢһݿӦĿ, һӦǿɻ.ȷHTTPӦĻ(cacheability)Ĺ13ж.ʹһԴǿɻ, Ҳܶһٻܷ񽫻濽ĳضڸӵԼ.

ֱ(first-hand)
      һӦֱӵûԵԭ, ɴĲҪʱ, ôӦֱӵ.ЧѾԭֱ֤, ôӦҲͬǵһֵ.

ȷֹʱ(explicit expiration time)     
ԭԤһʵһȷϵ²ٱٻ淵صʱ.

ֹ̽ʱ(heuristic expiration time)      
ûڵֹʱʱ,  ɸٻָֹʱ.

(Age)
     һӦǴ, ԭɹȷϵڵʱ.

(Freshness lifetime)
һӦɺ͹֮ʱ䳤.

(Fresh)    
һӦ仹ûг, Ǳʵ.

¾(Stale)
     һӦѾı, ǳ¾ɵ.

͸(semantically transparent)
ʹó˸δӰͻҲδӰԭʱ,  ٻĳضӦǹ͸ʽ.ٻ͸ʱ, ͻǡյԭֱӴõӦ(תӵıͷ)ȫͬӦ. 

Чб(Validator)
  һһٻ¼ǷһʵĵЧЭԪ(, һʵ(entity tag)ոʱ(Last-Modified time)).

/(upstream/downstream)
     κϢ:Ϣ.

/(inbound/outbound)
ںָϢӦ·:"""ԭ", """û".
Copyright  www.cnpaf.net (2007).          All Rights Reserved.

1. 4 

HTTPЭһ/ӦЭ.  Ӻ, ͻ󷽷, URIЭ汾ʽ, MIMEϢ, а޸, ͻϢͿܵ. 
ðϢЭ汾ͳɹ״̬Ӧ, ԰Ϣ, ʵάϢͿܵʵݵMIMEϢ. HTTPMIME֮Ĺϵ總¼19.4. 

󲿷ֵHTTPͨû, ӦõһЩԭԴ󹹳. 򵥵, Ծû(UA)ԭ(O)֮ĵһ(v). ------------------------>û(UA)-------------------һ(v)-------------------ԭ(O) <-----------------------Ӧ

һһϵн/Ӧгֵʱ, ָӵ. нʽ֣, غ. һת͹, վʽURI, дȫ򲿷Ϣ, Ȼ¸ʽ͵URIȷķ. һֽչ, 䵱ϲ, ҪʱΪ²Э. ıϢ䵱֮м̵㣻ͨҪн(ǽ), н鲻Ϣݵʱ. 
-------------------------------------->UA-----v-----A-----v-----B-----v-----C-----v-----O <-------------------------------------Ӧ


ͼʾûԭ֮н(A, BC). ӦϢͨĸ. ԺҪ, ΪĳЩHTTPͨѡֻӦڵķھ, յ, . ͼԵ, ÿֿܶæڶ·ͬʱͨ. , BԽԲͬAͻ, ңת͵ͬCķ, ͬʱ, ڴA. 


κηͨųԱʹڲĸٻ. ٻһԱ˸ٻӦ, /Ӧͻ. ͼΪ, ٶBӵO(ͨC)һǰӦı, δUAA. 
---------->UA-----v----------A-----v-----B-----C----O <---------Ӧ

еӦЧػ, һЩܺ޸, Ի涯Ҫ. 涯ͻӦHTTPҪڵ13ڶ. 

ʵ, Ŀǰάжֽṹõĸٻʹʵʹ. ЩϵͳʡԽȫ, 㲥ͨŻӿ,  ͨCD-ROMӻݵĻ, ȵ. HTTPϵͳӦڿƵӵҵ, ͨPDAsĵͺӺͶӵķ. HTTP1.1Ŀָָ֧Ӧ, ЭṹЩҪϸ߿ɿ, ųϻָʾϵӦõҪ. 

HTTPͨͨTCP/ɣ. Ĭ϶˿TCP 80, ˿Ҳʹ. ڻ, ⲢHTTPӦЭĶ. httpɿĴ䣻κṩֱ֤Э鶼ʹãЭ鴫ݵԪHTTP/1.1ӦṹӳѾ˱˵ķΧ. 

http/1.0, 󲿷ֵʵΪÿ/Ӧ𽻻ʹ. http/1.1, һӿһ/Ӧ𽻻, ȻӿܻΪԭж(8.1). 

2 Źһ﷨

21 BNF

ĵ涨лƶַɢ(prose)RFC 822Backus-Naur Form(BNF). ҪⱾ˵, ʹϤűʾ. BNFнṹ

=
һֱֽ(ûκ"<"">"), ں"="ĶǷ. ߵĿոʾһһеĹʱհײҪ. ĳЩʹôдĸ, SP, LWS, HT, CRLF, DIGIT, ALPHA, ȵ. ۺʱ, ֻҪǵĴʶ, ͿڶķΧʹý. 

֡
ԭʹ. , ԭĶ粻. 

1 | 2
("|")ֿԪǿѡ, , "yes | no"ʾyesnoǿɽܵ. 

(1 2)
ΧĶԪһԪ. (elem (foo | bar) elem)Сelem foo elemelem bar elem. 

*
ǰַ"*"ʾظ. ʽ"*Ԫ", ʾԪٳִ, ִ. Ĭֵ0, "*(Ԫ)"κֵ, 㣻"1*Ԫ"ҪһΣ"1*2element"һλ. 


[]
ѡԪأ"[foo bar]"൱"*1(foo bar)".

N 
ظ(Ԫ)൱ڡ*(Ԫ) Ҳ˵, (Ԫ)ó˴. 2DIGITһλ, 3ALPHAһַɵַ. 

#
"*", ṹ"#"һϵԪص. ʽ"#Ԫ, ʾٸԪ, Ԫ, Ԫ֮䱻һ(", ")Լѡ԰ɫռ(LWS). ʹбһʽ÷ǳף
( *LWS element) *( *LWS ", "*LWS element ))
ͿԱʾΪ
1#element
ʹṹ, ԪضԪ, ǲԪسֵĴ. 仰˵, (Ԫ),  ,  (Ԫ) ", ǽΪԪ. , ҪһԪصĵط, һǿԪ. Ĭֵ0, , #elementκ, 㣻1#elementҪ1Ԫأ1#2element12Ԫ. 

ע
÷ֺע, ӹĵұһξ뿪ʼֱβ. ע͵ļ򵥷, ע˵ͬõ. 

 *LWS
˵﷨ǻֵ. رע, Կհ׿ɳκ֮(ǻַ), Լֺͼ֮, ıһĺ. κ֮("token()"ж)һָ, 򽫻ᱻΪһ. 

22

Ĺ˻Ľṹ, ᴩڱ˵ȫ. US-ASCII(Ϣ׼)ַ涨ANSI X3.4-1986[21].  

 

       OCTET          = <˱ص>
       CHAR           = <ASCIIַ(˽ 0-127)>
       UPALPHA        = <дĸ"A"..."Z">
       LOALPHA        = <Сдĸ"a"..."z">
       ALPHA          = UPALPHA | LOALPHA 
       DIGIT          = <0, 1, ...9>
       CTL            = <ַ(octets 0 - 31)ɾDEL(127)>
       CR             = 
       LF             = 
       SP             = 
       HT             = 
       <">            = 


HTTP/1.1CR LF˳ΪκЭԪصβ־, ˱(Ӧü¼19.3).ڲβ־ĹýͶ, 3.7. 

       CRLF           = CR LF

ӳɿոˮƽƱʼ, HTTP/1.1 ıͷֵ۵. е
Կհ, ۵, ͬSPһ. ڽֵϢת͵ʱõSPκԿհ. 

       LWS            = [CRLF] 1*( SP | HT )

ıݺͲᱻϢ﷨͵ֵ. *TESTֿ
ISO-8859-1[22]ַ, Ҳ԰ַ涨ַ[14]. 

       TEXT           = <CTLsOCTET, LWS>

һCRLFΪͷһʱTEXTʹ. 

ʮַЭԪ. 

       HEX            = "A" | "B" | "C" | "D" | "E" | "F"
                      | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT


HTTP/1.1ıͷֵLWSַָֹɵ. Щַַ, ڲֵ(3.6ڶ). 

       token  ()        = 1*<CTLsָ CHAR >
       separators(ָ)    = "(" | ")" | "<" | ">" | "@"
                      | ", " | ";" | ":" | "\" | <">
                      | "/" | "[" | "]" | "?" | "="
                      | "{" | "}" | SP | HT

ԲעͿ԰һЩHTTPͷ. ֻΪֵһʱעͲ. , Բֵһ. 

       comment (ע)= "(" *( ctext | quoted-pair | comment ) ")"
       ctext          = <"(" and ")"TEXT >

һıַ˫, һ. 

       quoted-string  = ( <"> *(qdtext | quoted-pair ) <"> )
       qdtext         = <<">TEXT >

б("\")һַýṹ, ַע. 

       quoted-pair    = "\" CHAR

 


3 Э

3.1 HTTP汾
Copyright  www.cnpaf.net (2007).          All Rights Reserved.

HTTPʹ"<Ҫ>.<Ҫ>"ıŷʾЭ汾. Эİ汾ϣ߱ʾϢĸʽԱһHTTPͨ, ǵǰͨŻõ. ϢӲӰͨŶ, չֵ, 汾Ųû˱仯. ЭĸıһЩ, ûиıһϢ, Ϣ߰˷, ʱ<Ҫ>ֱҪ. ЭϢʽıʱ, <Ҫ>. 

HTTPϢİ汾ϢĵһHTTP-汾ʾ. 

       HTTP-Version   = "HTTP" "/" 1*DIGIT "." 1*DIGIT

עҪʹҪֱ뿴, ߶ӵȵλ. , HTTP/2.4İ汾HTTP/2.3, HTTP/2.3İ汾HTTP/12.3. λضߺ, һҪ. 

һͰHTTP汾"HTTP/1.1"ӦϢӦ, ķӱ˵. ӱ˵ӦӦϢʹ"HTTP/1.1"HTTP-汾, κ HTTP/1.0ݵϢ. ںʱHTTP-汾ֵ, ο
RFC 2145[36].

һӦõHTTP汾ӦӵHTTP汾.

ת͵ϢЭ汾Ӧð汾ͬʱ, ҪС. ȻЭ汾ʾߵЭ, /һܷͱʾ汾ʵʰ汾Ϣ. յ߰汾, /ر뽵İ汾, ߷Ӧ, л. 

RFC 2068[33]ֵHTTP/1.0Эͬ, ٻ, ؿ, 벻ֵ֧߰汾. /صӦҪ汾űͬͬ. 

עHTTP汾תܻذ汾ֹͷ޸. 

3.2 ͳһԴʶ(URI)

URIsΪ֪WWWַ, ͨļʶ, ͨԴʶ[3], ԼͳһԴλ(URL)[4]ͳһԴ(URN)[20]Ľ. ֻҪHTTP, ͳһԴλֻǸʽַ, ͨ, ַ, καȷԴλ. 


3.2.1 һ﷨


ʹʱ, HTTPURIԱʾɾʽ֪URIʽ. ʽǸʵURIһժҪΪͷ, һð. URL꾡Ϣο"ͳһԴʶ(URI):һ﷨", RFC 2396 [42](RFCs 1738 [4]RFC 1808 [11]).˵Ƿ˵"URI-", "URI", "URI", "˿", "", "·""Ȩ"Ķ.

HTTPЭ鲻URIĳȵ.ܹǷκԴURI, Ӧܹ޳ȵURI, ṩԲURIĻGETʽ.

ע:255ֽڵURIʱӦ, ΪһЩɵĿͻʵֿ֧ܲЩ.

3.2.2 http URL

httpͨHTTPЭ鶨Դλ.ڶַ-http URL﷨.
   http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

˿Ϊջδ, ͼٶΪ80.弴:ʶԴڷ, ̨Ǹ˿ϼTCP, ԴURIΪ·(5.1.2). ʲôܵʱ, URLʹIPַӦñ(οRFC 1900 [24]).ԵַûгURL, ԴURIʱΪ"/".յһǳʸ, һܸı.


3.2.3 URI Ƚ

ȽURIǷƥʱ, ͻӦöURIִСд, ԰ֽΪԪıȽ.:

-һΪջδĶ˿ڵͬǸURIĬ϶˿;

-ıȽϱǲִСд;

-ıȽϱǲִСд;

-һվ·ͬھ·"/".

   Characters other than those in the "reserved" and "unsafe" sets are equivalent to their ""%" HEX HEX" encoding.
"""Σ"ַ(μRFC 2396 [42]) , ַͬǵ""%" HEX HEX".  

, URIǵͬ:

      http://abc.com:80/~smith/home.html
      http://ABC.com/~smith/home.html
      http://ABC.com:/~smith/home.html


3.3 /ʱʽ

3.3.1 

ʷϵ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


һָʽΪInternet׼, ʾһRFC 1123 [8](RFC 822[9]汾)Ĺ̶ȵӼ.ڶָʽʹñȽձ, ǻڷRFC 850 [12], Ҫ(Ӧ)λʾ.ֵ﷨HTTP/1.1ͻͷָʽ(ΪͬHTTP/1.0), ȻǱֻRFC 1123ʽͷʾHTTPֵ.

ע:ֵĽڽܿɷHTTPӦ÷ֵʱҪᶨ, ַHTTPӦʱͨ/صSMTPNNTPϢ.

еHTTP/ʱӡǶԸƽʱ(GMT)ʾ.ΪHTTP, GMTȫͬUTC(Эʱ).ǰʽĸʱд-GMT̺ʾ, ҶȡASCʱʽʱȱٶ.HTTPִСд, ﷨ΪSPرLWS, һܰLWS.
       HTTP-date    = rfc1123-date | rfc850-date | asctime-date
       rfc1123-date = wkday ", " SP date1 SP time SP "GMT"
       rfc850-date  = weekday ", " SP date2 SP time SP "GMT"
       asctime-date = wkday SP date3 SP time SP 4DIGIT
       date1        = 2DIGIT SP month SP 4DIGIT
                      ; day month year (e.g.,  02 Jun 1982)
       date2        = 2DIGIT "-" month "-" 2DIGIT
                      ; day-month-year (e.g.,  02-Jun-82)
       date3        = month SP ( 2DIGIT | ( SP 1DIGIT ))
                      ; month day (e.g.,  Jun  2)
       time         = 2DIGIT ":" 2DIGIT ":" 2DIGIT
                      ; 00:00:00 - 23:59:59
       wkday        = "Mon" | "Tue" | "Wed"
                    | "Thu" | "Fri" | "Sat" | "Sun"
       weekday      = "Monday" | "Tuesday" | "Wednesday"
                    | "Thursday" | "Friday" | "Saturday" | "Sunday"
       month        = "Jan" | "Feb" | "Mar" | "Apr"
                    | "May" | "Jun" | "Jul" | "Aug"
                    | "Sep" | "Oct" | "Nov" | "Dec"

ע:HTTP/ʱӡǸʽӦЭ.ͻͷΪû, ¼ʹЩʽ.

3.3.2 Delta

һЩHTTPͷյϢ, ʮʾʱֵ.
       delta-seconds  = 1*DIGIT

3.4 ַ

HTTPʹõĹ"ַ"ĶMIMEһ.

ĵе"ַ"ָһһһֽתһַеķ.עһתǲҪ, ת, еַһַõ, ַṩ˽бʾһضַ.彫ַ뷽ʽ, Ӽ򵥵ĵӳUS-ASCIIӵı񽻻ISO-2022ļʹõ.Ȼ, MIMEַĶ˵Ӱֽڱ任ַʵֵӳ.ر, ʹⲿϢȷӳǲ.

ע:ʹõ"ַ"һıһ"ַ".ȻHTTPMIMEʹͬע, ǺҪ.

HTTPַòִСдıǱʾ.ȫǼIANAַע[19].
       charset = token

HTTPΪֵַ, κIANAַעԤȷֵıǱʾעַ.ЩIANAַ, ӦӦʹַ.

ʵӦעIETFַҪ[38][41].

3.4.1 ʧַ

һЩHTTP/1.0ûַͷΪ"Ӧò²."ϣ, ԰һַ, ʹַISO-8859-1;֪ʹ߻ʱ, ҲӦ.

ҵ, һЩɵHTTP/1.0ʵϸַ.HTTP/1.1߱ӷṩַע;ʾĵʱ, Щṩ""ַûʹеַ, ֧Ǹַ, ǽߵѡ. ο3.7.1. 

3.5 ݱ

ݱֵʾһѾӦʵı任. ݱҪĵѹ, 仰˵, Чı任ʧĻý͵, ҲʧϢ. , ʵԱʽ, ֱӴ, ֻɽ.

       content-coding   = token

ݱֵǲִСд.HTTP/1.1ڽ(14.3)(14.11)ͷʹݱֵ.ֵܸݱ, ҪָҪʲô
ȥ.

ֵ(IANA)䵱ݱֵǵעᴦ., עб:

  gzip(ѹ) 
һļѹ"gzip"(GNU zip)---RFC 1952---ɵıʽ.ָʽһ32λCRC Lempel-Ziv(LZ77).   [ע]CRC:ѭУ

   compress(ѹ)
ͨUNIXļѹ"compress"ɵıʽ.ָʽһ־пӦԵLempel-Ziv-Welch.
δı˵, óʶʽǲȡ, ٵ.ǵôΪʷʵĴǺõķ.ΪͬǰHTTPʵ, ӦӦý"x-gzip""x-compress"ֱͬ"gzip""compress".
   
   deflate(С)
RFC 1950 [31]"zlib"ʽRFC 1951 [29]"deflate"ѹƵ.

   Identity(ʶ)
    ȱʡ(ʶ);, תӦ.ڽ뱨ͷ, Ҳܱݱ뱨ͷ.

  µֵıӦע;ΪͻͷĻ, Ĺ淶Ҫʵһɱòܶʵֵֵ, 붨Ŀһ.

3.6  

   ֵʾһѾ, ܹ, ҪӦһʵıת, Ϊܹȷͨ簲ȫ.ⲻͬ, ϢԶԭʼʵ.
       transfer-coding = "chunked" | transfer-extension
       transfer-extension      = token *( ";" parameter )

   /ֵԵʽ.

                          =   "=" ֵ
                          = 
       ֵ                     =   |   -(quoted-string)

   дֵǲֱ۵.HTTP/1.1TEͷ(14.39)ʹͷ(14.41)ô.

   ۺʱһ붼ӦһϢ, ñ"", Ϣֹͣ.""뱻Ӧʱ, ӦϢ.ЩܴӶȷϢĴ䳤(4.4)

   MINE[7]ݴֵ, ܹʵִͷ7λĶݵİȫ., ȫԴ8λЭвͬĽ.HTTP, ϢΨһȫȷȷеĳȵѵ(7.2.2), ڹϼܵҪ.

   Ȩ(IANA)˴ֵעᴦĽɫ., ע±:""(3.6.1), ""(3.6.2), "gzip"(3.5), "ѹ"(3.5), "С"(3.5).

   µĴֵӦµֵͬķʽע(3.5).

յһĴʵʱӦ501(ʵ), жϵ.HTTP/1.0ͻʹ.

3.6.1 ɿ鴫(Chunked Transfer Coding)

   ɿϢ, Ϊǽһϵдʽ, ÿһͬԼߴָʾ, һʵͷĿѡtrailer.ĵͬϢһת, ӶѾȫϢ.
       Chunked-Body   = *chunk()
       -           last-chunk(-)
                        trailer(׷)
                        CRLF

       chunk          = chunk-size [ chunk-extension ] CRLF
                  =  -ߴ [  -չ]CRLF
                        chunk-data CRLF
                         - CRLF
       chunk-size     = 1*HEX
       
       last-chunk     = 1*("0") [ chunk-extension ] CRLF
        -     = 1*("0") [-չ]CRLF             

       chunk-extension= *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
       -չ                -ⲿ-      -ⲿ-ֵ
       chunk-ext-name = token
        -ⲿ-= 
       chunk-ext-val  = token | quoted-string
         -ⲿ-ֵ =   |  -
       chunk-data     = chunk-size(OCTET)
        -     =  -ߴ(λӽ)
       trailer        = *(entity-header CRLF)
        ׷        = * (ʵ- CRLF)

   ߴ16Ʊʾߴһ.ɿһߴΪ0Ĵ, ׺trailer, һֹ.

   trailerϢĩβӵHTTPͷ.trailerͷɱӦڼҪ˵trailerͷ (14.40)

   һӦôʱκͷʹtrailer, һΪ:
   a)        һTEͷʱ"trailer"Ӧתǿɱܵ, 14.39;
   b) ΪӦԭʼ, trailerȫԪݹ, ߿ڲԪݵʹϢ(һԭʼɽܵķʽ).һ, ԭʼԸtrailerܻͨͻͨϱĬĬֿ. 

   ϢһHTTP/1.1˽ܲ8תһHTTP/1.0ʱ, ֹһԵʧ.һЭ齫ʹڴϰһ޴ĻΪҪη.  

   һн봦ڸ¼19.4.6

  HTTP/1.1Ӧóܽܺͽ"", ұǲĴչչ.

3.7 ý

   Ϊṩ, չ͹淶ͨ, HTTPĿ¼(14.17)Ͽ(14.1)ͷý.

       ý       =  "/" *(";"   )
                  = 
              = 

   /ֵʽѭ/.(3.6ڶ)

   , , Ͳǲֱ۵.ֱֵ, ȡڲƵ.
Եİɫռ(LWS)ܱͺ֮, ҲһԼֵ֮.һý͵ĴҪ, ȡýעеĶ.

  עһЩɵHTTPӦʶýͲ.һɵHTTPӦʱ, ֻе/;ȷҪʱ, ʵýͲ.

   ýֵѾȨ(IANA[19])ע.ý͵עRFC 1590[17].ʹδעýǲӦֵ.

3.7.1 淶ԭȱʡ

   ýԵʽע.һͨHTTPͨѶʵ뱻ڴ͵ʵĹ淶ʽ, 'text', ¶ζ.

   ڹ淶ʽ, 'text'͵ýGRLFΪȫеļ.HTTPҪ, һʵ屻ʱ, ȫýԼ򵥵GRLFΪһеĸϵĴ. ͨHTTPϵԭý, ΪһеļϵĴ, HTTPӦóCRLF, յCR, ͿյLF. , ԭһб, ûзֱ8λֽ1310ʾCRLF, ĳֶֽ, HTTPʹκαΪ˱CRLFмеĵͬκ8λֽڴ.мϵԽӦһʵеԭý;һյCRLFHTTPƵĽṹжܴCRLF.(ͷͶಿ߽)

   һʵһĿ¼ɵ, 뱻ȱʽ.

   "charset"һЩýһʹݵ(3.4).ûṩcharset, ͨHTTPʱ"text"͵ý;ͱһΪ"ISO-8859-1"Ĭcharsetֵ.õݲͬ"ISO-8859-1"Ӽ뱻ʵcharsetֵ. μ3.4.1м.

3.7.2 ಿ(Multipart type)

   MIMEṩһϵ"ز"---ڵϢһʵİװ.еĶز͹һ, RFC 20465.1.1ж.
   һΪýֵһֵı߽.ϢԳΪһҪЭ, ֻּCRLFеļ.ͬRFC 2046, һϢĩβΪ;HTTPӦóܴĩβ(ʹԭʼĶزְһĩβ).ЩԼΪǱһزϢʵĹб, زֱ߽ѾϢ"β"Ա.

   ͨ, HTTPһϢΪκý:ϸЧ.Ϣ206Ӧʱ, һ"ز/ַ"(¼19.2), ᱻһЩHTTPװô, 13.5.414.16., һHTTPûӦѭһMINEûͬƵΪ, ڶزվ֮.MIMEͷһزϢÿһ, ԳMIMEĶHTTPûκ.

  ͨ,  һHTTPûӦѭһMINEûͬƵΪ, ڶزվ֮.һӦóյһʶĶز, Ӧó뽫Ϊ"ز/".

  ע:"ز/̬-"ʽѱʺͨPOST󷽷Ĵʽȷ, RFC 1867[15].

3.8 Ʒ

   ƷǱͨ뱾ʶԼͨѶӦ.ܶ򻹰ѲƷϿɴμƷ, רҵƷӦҪĲֱһһг, ðɫֿ.չ, ƷʶӦҪԵ˳г.

       Ʒ           = ʾ  ["/" Ʒ -汾]
       Ʒ-汾       = ʾ

   :
        û-:   CERN-LineMode/2.15 libwww/2.17b3
      : Apache/0.8.4
   ƷʾӦԼ.ǲҪϢ.ȻһʾܳڲƷ-汾, ʾܱһ汾ʶ(i.e.,  ͬƷгɹİڲƷֵĲƷ汾)

3.9 ֵ(Quality Values)

  HTTPͨ(12)ü̵""֮ͬͨҪϵ("Ҫ").һҪԴ01һʵ, 0Сֵ, ֵ.һΪ0ֵ, ôݲͻ.HTTP/1.1ӦܲСλ.ЩֵûҲӦַʽ.
       qvalue         = ( "0" [ "." 0*3DIGIT ] )
                      | ( "1" [ "." 0*3("0") ] )

   "ֵ" һô, ΪЩֵҪõеĽϵ.

3.10 Ա

   һԱǺȻһ˵, д, ˴Ϣ.Բ.HTTPϿԺĿ¼Ա.

   HTTPԱǵ﷨עRFC 1766[1]жһ.֮, һԱһֻಿֹ:һҪԱǺͿΪյһϵ±ǩ.

        Ա      = Ҫ    *("_"  ±ǩ)
        Ҫ   = 1*8ALPHA
        
        ±ǩ        = 1*8ALPHA
        
    ǩвֿո, ǩԸ(case-insensitive).IANAԱеּ.͵ıǩ:

       en,  en-US,  en-cockney,  i-cherokee,  x-pig-latin

   κĸҪǩһISO-639Եд, дĸ±ǩһISO-3166ĹҴ.(ǩδעıǩ;һ֮жǿڽעӱǩ).

3.11 ʵǩ

   ʵǩͬԴбȽʵ.HTTP/1.1Etag(14.19), If-match(14.24), If-None-match(14.26), If-rang(14.27)ͷʵǩ.ٻ洢ȷһʹúͱȽϵĽ13.3.3.һʵǩһĲ͸һ, ܼһָʾǰ׺.

      entity-tag = [ weak ] opaque-tag
      weak       = "W/"
      opaque-tag = quoted-string

   һ"̵(strong)ʵǩ"ʵλӽʱܻᱻһԴʵ干.

   һ"(weak)ʵǩ", "W/"ǰ׺ʾ, ʵҿԻϲشı䶯ʱ, ܻᱻһԴʵ干.һʵǩֻԱʱʹ.

   һʵǩһԴϵʵ뱾Ƕһ޶.һʵǩֵԱͬURIʵ.ͬʵǩֵڲͬURIʵеòζЩʵĵͬ.

3.12 Χλ(Range Units)

    HTTP/1.1һͻҪ󵥶ֵӦʵ屻Ӧ.HTTP/1.1ڷΧ(14.35)Ŀ¼Χͷ(14.16)÷Χλ.һʵɸݲͬĽṹλֽ.

       Χ-λ       = ֽ-λ |  -Χ-λ
      ֽ-λ        =  "ֽ"
      -Χ-λ   = 

   HTTP/1.1жΨһķΧλ"ֽ".HTTP/1.1ʵʱܺλָķΧ. 
   HTTP/1.1ӦйطΧ֪ʶʵ


4 HTTPϢ

Copyright  www.cnpaf.net (2007).          All Rights Reserved.

4.1  Ϣ

      HTTPϢɴӿͻʹӷͻĻش.
              HTTP-Ϣ = |ش ;HTTP/1.1 Ϣ
       ()ͻش()ϢһϢʽRFC 822[9]ʵ(ϢЧغ).Ϣɿʼ, ߸ͷ(Ҳͷ), ͷĿ(Ʃ˵һֻлسַ), ʱܻһϢ.
       һϢ=ʼ
                  *(Ϣͷ CRLF)
                  CRLF
                   [Ϣ]
       ʼ    =|״̬
       Ϊ˽׳, յҪеĵطκνյĿ.仰˵, ڶһϢʼЭʱյCRLF, CRLF.
       һһHTTP/1.0ͻPOSTCRLF.ΪʲôBNFȷֹ, һHTTP/1.1ͻûбҪʼ͸һCRLF. 

4.2 Ϣͷ
     HTTPͷͷ(4.5)ͷ(5.3), Ӧͷ(6.2)ʵͷ(7.1), ѭRFC822[0]3.1иͬһĸʽ.ÿһͷһ":"ֵֺ.ǴСде.ֵκLWSǰ, ܵSPȵ.ͷͨѸ(һSPHT)ǰչɶ.HTTPṹʱ, Ӧñѭ"ͬʽ", Ƕ֪, ʹʱһЩܽκζĲ.

  ͬĸʽ.

Ϣ-ͷ=":"[ֵ]
=Ǻ
ֵ=*(|LWS)
=<ɰλֽڹֵ, ıϱ, ָ, õַ>

ݲκĻӵLWS:λԵĵһǿհ׵ĵطǰĲǿհ׵ĵطĺ.ȥЩӵLWSܲӰݵ˼, κλ֮LWSڽݻϢʱõSP滻.
òͬյͷ˳Ҫ., һõϰͳͷ, ͷӦͷ, ʵͷ.

ϢͷʹͬһܻһЩϢ, ЩϢ, Ҳֻöŷָб(, #(ֵ)).ЩпûиıϢ±ϳһ":ֵ", ЩŸкֲӵһ.Щͬһһͷ˳Ҫ, ˵һϢڴʱһܸıЩֵ˳.

4.3 Ϣ

  HTTPϢϢ屸ҪӦɵʵ.ЩϢ뱻Ӧõʱźʵ岻ͬ, ôͷ(14.41).

     Ϣ=ʵ|<ʵ>

볣ʾЩӦóΪ˰ȫͱ֤ϢȷĴ.һϢԶʵ, /ӦԱκӦóϻȥ.

   һϢϢʱĹӦʱĲһ.

   һϢݳȻͷĴͷϢ.ʽĹ淶мʵһҲ벻ܰϢ.һʹκϢ;󷽷ûжһʵı, 򵱴ǱϢ.

   ӦϢ, һϢǷϢķӦ״̬(6.1.1).ͷ󷽷Ӧ𶼲ܰϢ, ʹʱʵͷĴǰ.1XX(Ϣ), 204(ݵ), 304(û޸ĵ)Ӧ𶼲ܰϢ.ӦϢ, ȻܳΪ.

4.4 Ϣĳ

     һϢĴ䳤ϢϢеĳ, Ҳ˵, 뱻Ժ.һϢϢ, ʵ䳤¼(Ⱥ˳):

     1. κλӦϢӦϢ, 1xx, 204, 304ӦκζͷĻӦ. ͷһΪհ, ʵǷ. 

     2. ͷ(general-header)ֵĻֵ, ô䳤ȾͿʹchunkedȷ, Ϣӹرնж.

     3. Content-Lengthͷ(ʵͷ), ôֵϢ崫䳤. ͷContent-Lengthͷ򶼳, Ȳһ, ôContent-LengthͷеֵͲô. 

     4. 1.0͵ķΧͷಿ/λΧ1, 2, 3ķʽ綨Ϣ峤. 

     5. ڹر.(ڹرӲ˵ӦĽ, Ϊ·ûпͻһӦź.)

ΪHTTP/1.0Ӧó, HTTP/1.1ϢһЧݳȵͷ, ֪ӦHTTP/1.1.һһϢ岢ûиݳ, ǸӦ400()жϢȵĻ, Ӧ411(Ҫɶ)ҪյһЧݵĳ.

еHTTP/1.1Ӧó"CHUNKED"(3.6), ֻϢϢĳ̶Ȳܱ.

ϢûбҪݳͷnon-identity.Ϣһnon-identity, 䳤ȱ.

һݵĳϢĵطʱ, ֵϢа˽һ.HTTP/1.1ûͨʹߵһЧĳȱܺͷ.

4.5 ͷ

   һЩͷӦһӦϢ, ûӦ洬ֵʵ.ЩͷֻӦЩϢ.

     ͷ=ٻ         ;14.9
                |         ;14.10
                |         ;14.18
                |         ;14.32
                |׷         ;14.40
                |     ;14.41
                |         ;14.42
                |·         ;14.45
                          ;14.46

   ͷֵչЭ汾ı仯. Ȼ, µĻʵʵͷܱ賣ͷ, ϢевֶΪͷĻ, δϵͷһ㵱ʵͷ򿴴. 


5 

ӿͻ, аԴķʽ, Դıʶ, ԼЭİ汾
   =                       ;  5.1
       *((汨ͷ                    ;  4.5
         |ͷ                    ;  5.3
         ʵ屨ͷ)CRLF)              ;  7.1
           CRLF         
         [Ϣ]                   ;  4.3

5.1 

   -еĿͷǷʶ, URLЭ汾, Իسн.֮ÿո(SP)ָ, Ļس, лس(CR)ͻ(LF).

       -  ==ʽ(ո) URI(ո)  HTTP汾(س)

5.1.1

  ָURIָԴʵֵķʽ, ַʽе

Method     = "OPTIONS"                     ;9.2
             | "GET"                        ;9.3
             | "HEAD"                       ;9.4
             |"POST"                        ;9.5
             |"PUT"                         ;9.6
             |"DELETE"                      ;9.7
             |"TRACE"                       ;9.8
             |"CONNECT"                     ;9.9
             | չʽ(extension-method)

չʽ=   

Դķб(Allow)ͷϸָȻÿԶ̬ĸı, صӦ֪ͨͻǰǷ.ԭ֪, Դ, ԭӦ״̬405()ԭϺʵ, ԭӦ״̬501(ûʵ).ȡ(GET)ͱͷ(HEAD)ӦеĶ๦ܷ֧֣еķǿѡ, Ȼ, ϵķûʵ, Ǳ뱻ڵھ˵ͬһ﷨ʵ֣

5.1.2 URL

URLһȫͳһӦԴԴʶ(.2 )

URL   ="*"|URL|·|authotity

URIĸѡһǻ, Ǻ"*"ʾӦĳرԴ, Ƿ, ֻеõķԴҪķ.

             ѡ(OPTIONS)*HTTP/1.1

ʱ, URIַǲȱٵģҪתԸٻ洢Ч, Ӧע⵽԰תһֱ̨תURIַ˵ķΪ˱ѭ, ʶеķ, κα, ر, IPַо£

ET  http://www.w3.org/pub/www/TheProject.html  HTTP/1.1

ΪδHTTP汾תURLַ, лڣTTP/1.1ķܾURLַ, ȻHTTP/1.1Ŀͻֻ󷢸

(authority)ɲֻӷ(CONNECT)õ(.9)

ͨʽգIڱʶԭϵԴ., ԣգң·Ϊգң̴(.., ·), գңɾַ(authority)(ͷ, ϣֱӵõԭԴĿͻ""Ķ˿ڣԣãӷУ

GET /pub/WWW/TheProject.html HTTP/1.1
      Host:www.w3.org

, ע·ǿյģûгʼURI, ""(Ŀ¼)

գң3.2.1˵ĸʽ䣮"%HEXHEX"[42], Ϊȷķ, ԭ룮ʵ״̬Ч, Ӧ

͸Ĵתյգң̵ַһ̨ڵķʱ, ֹд "·", ᵽ""յľԵַڴ

עԭǡ÷Ǳգңַʱ, "ֹд"ֹ
ĺ, ʵֳ˽ǰһЩHTTP/1.1ͽ֪дգңɣ

5.2Դ

һINTERNETľȷԴURLͷ.

HTTP/1.1ЭʶԴʱ, ԴͬԭԺͷֵ, (..˽֧HTTP/1.1ϵһ).

Դķ(ʱָհ׵)µĹHTTP/1.1Դ

 URIǾԵַ, URIһ֣κͷӦԣ
 URIǾԵַ, һͷ, ɸֵ
 ɹ涨涨Ч, Ӧһ400Ϣ

ΪҳԴ, һȱʶHTTP/1.0߿Գʹ̽ķ(գң·ضΨһ)

.3ͷ

ıͷͻݹ, ͻԼĸϢЩΪγɷ, ͳзõĲвĺ壮

ͷ(Accept)                ;14.1
                   |Charset (Accept-Charset)              ;14.2
                   |ձ(Accept-Encoding)          ;14.3 
                   |(Accept-Language)               ;14.4 
                   |֤(Authorization)                        ;14.8 
                   |(Expect)                              ;14.20
                   |Դ(From)                                  ;14.22
                   |(Host)                               ;14.23
                   |ƥ(If-Match)                       ;14.24
                   |޸(If-Modified-Since)              ;14.25
                   |粻ƥ(If-None-Match)            ;14.26
                   |(If-Range)                 ;14.27
                   |粻޸(If-Unmodified-Since )         ;14.28
                   |ת(Max-Forwards                      ;14.31
                   |֤( Proxy-Authorization)         ;14.34 
                   |Χ(Range)                                 ;14.35
                   |ύ(Referer)                          ;14.36
                   |TE                                  ;14.39
                   |û(User-Agent)                  ;14.43

Э汾ı仯, ͷֿԿɿչȻµĻչıͷԸͷ﷨, ǰͨвֳͷ򣮲ϵıͷ򱻵ʵ屨ͷ

 Ӧ

պͷһϢ, һHTTPӦϢ

Ӧ𡡡״̬С                                 ;6.1
*((汨ͷ(general-header)                ; 4.5
                       |Ӧͷ(response-header)            ;6.2
                       |ʵ屨ͷ(entity-header)CRLF)          ;7.1
                             CRLF
                      [Ӧ]                             ;7.2

6.1 ״̬

ӦϢĵһ״̬, Э汾Լ״̬صı˵, ּÿո, Ļس, м䲻лسУ

״̬СHTTP汾 SP״̬ SP ԭ CRLF

6.1.1״̬ע

״̬ͼλֵ, Щڵʮ£עĹ״̬ı״̬ԶƶעûģͻҪʾע

״̬ĵһλֶӦͣλûκ񣮵һλֵ

-1xx:                 - յ, .
-2xx  ɹ                  - ɹյ.
-3xx  ط              - Ϊ, ȡһʩ.
-4xx  ͻ˳            - ˳.
-5xx              - ޷ȻЧ.

ΪHTTP/1.1״̬뵥ֵ, һӦһϵע, , гעֻǽDDǿԱ൱ûиɫʵЭȡ

״̬롡
             "100" ;         10.1.1:                    
                    |"101"   ;  10.1.2:         תЭ     
                    |"200"   ;  10.2.1:         OK
                |"201"   ;        10.2.2:                   
                    |"202"   ;  10.2.3:            
                |"203"   ;  10.2.4:        ȨϢ   
                                                    
                    |"204"   ;   10.2.5:         
                    |"205"   ;   10.2.6:        
                    |"206"   ;   10.2.7:  ֲ      
                    |"300"   ;   10.3.1:  ѡ      
                |"301"   ;   10.3.2:  ƶ      
                |"302"   ;   10.3.3:            
                    |"303"   ;   10.3.4:  ۲Ĳ          
                    |"304"   ;   10.3.5:  ֻ                  
                    |"305"   ;   10.3.6:  û              
                    |"307"   ;   10.3.8   ʱط              
                |"400"   ;   10.4.1:                  
                    |"401"   ;   10.4.2:  δȨ              
                    |"402"   ;   10.4.3:  Ҫ֧            
                    |"403"   ;   10.4.4:                    
                    |"404"   ;   10.4.5:  ûҵ                 
                    |"405"   ;   10.4.6:  ķʽ          
                    |"406"   ;   10.4.7:                   
                |"407"   ;   10.4.8:  Ҫ֤ 
                |"408"   ;   10.4.9ڣ         ʱ              
        |"409"   ;   10.4.10ڣ        ͻ                  
        |"410"   ;   10.4.11ڣ ֹͣ                  
        |"411"   ;   10.4.12ڣ Ҫĳ            
        |"412"     10.4.13ڣ        Ԥʧ            
        |"413"   ;   10.4.14ڣ ʵ̫      
        |"414"   ;   10.4.15ڣ        -URI̫      
                |"415"   ;   10.4.16ڣ ֵ֧ý   
                |"416"     10.4.17ڣ        ķΧ   
                |"417"   ;   10.4.18ڣ ʧ           
                |"500"   ;   10.5.1:   ڲ       
                |"501"   ;   10.5.2:          ʵ             
                |"502"   ;   10.5.3:                  
                |"503"   ;   10.5.4:          ʵ         
                |"504"   ;   10.5.5:   سʱ             
                |"505"   ;   10.5.6:   HTTP汾֧  
              |չ   

չ =3DIGIT
ע=*

HTTP״̬ǿչģHTTPӦóҪע״̬ĺ, Զ׼Ǻܺģ, Ӧó˽ɵһλָ״̬, κδʶӦӦǸ͵ģ00״̬, һδʶ״̬벻ܻ森, ͻյһδʶ״̬431, Copyright  www.cnpaf.net (2007).          All Rights Reserved.
԰ȫļٶд, ԴӦǷ·ͻյ400״̬룮, ûӦʵӦһύû, Ϊʵܿܰ˵ƽ״̬ϿɶϢ

.2Ӧͷ

ӦͷӦĸϢ, ЩϢܷ״̬.ЩͷйطϢԼURIָԴһͨ·

Ӧͷ  =  շΧ                        ; 14.5
                   |ʱ         ; 14.6
                   |Etag            ; 14.19
                   |λ                 ; 14.30
                   |֤            ; 14.33
                   |Ȼ            ; 14.37
                   |             ; 14.38
                   |仯               ; 14.44
                   |WWW֤                ; 14.47

Э汾ı仯, ӦͷԿɿչ, ͨŵɲֶӦͷ, µĻԵӦͷԱӦͷĺ, δϵıͷ򱻵ʵ屨ͷ


7.  ʵ. 

δر涨, ӦıҲԴʵ.  ʵʵ屨ͷʵ, ЩӦֻʵ屨ͷ. ڱ, 뷢߼ȿָû, Ҳָ, ˭շʵ. 

7. 1 ʵ屨

ʵ屨˹ʵĵάϢ(), ¶Դ. һЩǿѡ, һЩɼָ涨. 

ʵ屨ͷ = (Allow)                        14.7
                        |ݱ룻                                14.11
                        |ԣ                                14.12
                        |ݳȣ                                14.13
                        |λã                                14.14
                        |-MD5                                14.15
                        |ݷΧ                                14.16
                        |ͣ                                14.17
                        |(Expires)                        14.21
                        |ϴ޸ģ                                14.29
                        |չͷ

չͷ=ıͷ

չͷڲıЭǰ¶ʵ屨ͷ, ֤Щնܹʶ. δʶӦߺ, ұ뱻͸ת. 


7. 2 ʵ. 

HTTPӦ͵ʵĲ(ڵĻ)ĸʽ뷽ʽӦʵ屨. 
      
       ʵ= *λֽ

4. 3, ʵֻеĴʱŴ. ʵͨԱİĳֱ֤ȫұڴĴнõ. 

7. 2. 1.  . 

ڱеʵĶ, ɱͷе"""ݱ". Ҳһ˫ıģͣ

    ʵ=ݱ(())

""涨˻ݵý. 
"ݱ"ָʩӵκθӵ, ͨѹΪĿĵı뷽ʽ, ΪԴһ.  ûȱʡı뷽ʽ. 

һʵĵHTTP/1. 1ĶӦ""ͷ, Զĵý. ҽ""δýʱ,  ߲ſͨ鿴Դ, չURL²ý. ýȻδ֪, ӦΪ"Ӧ/λֽ". 

7. 2. 2 ʵ峤

ĵʵ峤ָڶԱĽдǰĵĳ. 4. 4ڶȷĴ䳤ȵķ. 


8. 

8. 1 . 

8. 1. 1 Ŀ

ڳ֮ǰ, ΪȡÿһURL˶TCP ,  ͼHTTPĸ, INTERNET. ǶʽͼƬͨʹûڶʱڶͬһύ. ĿǰЩķԼԭʵʩĽ[26], [30].  ʵʩľ̺ͶʵHTTP/1. 1(RFC 2068)ĲԾʾõĽ[39].  Ҳ˳̽, T/TCP [27]. 

HTTP ŵ㣺

--- ͨرսٵ, ʡ·(ͻ, , , , ٻ洢)CPUʱ, ʡTCPЭƿڴ. 

--- HTTPӦԽˮ.  ˮ߷ʽʹÿͻ밤ȴӦ𼴷, Ӷֵ˵TCP, ˱ʱ. 

--- ڼTCPݰͬʱ, ʹTCP˳ԣʱȷӵ״, ӵ. 

--- ΪڴTCPϺķʱ, ʹɵӳõ. 

--- ڳᵼTCPӵĹر, HTTPԸõʵ. ʹý°HTTPûڳһЩ¹, ɰͨʱ, ڽӵþģʽ. 

HTTPʵӦó. 

8. 1. 2 

HTTP/1.1 HTTP 汾һڳκHTTPӵȱʡʽ. Ҳ˵, ָ, ͻӦٶᱣֳ, ڽӵĳӦʱҲӦ. 

ṩһֿɿͻźֹTCPӵĻ. ֹӵź""ͷ(14.10). һֹӵź, ͻ㲻κ. 

8. 1. 2. 1 ̸

ӱͷа"ֹ"ķ, HTTP/1. 1ܿԼٶHTTP/1. 1 ͻҪάֳ. ڷӦֹ, ӦһֹҪӱͷ. 

ǿͻֹ, ⶼǱӵһ. 

Ǿȷָ, ͻӦٶͰHTTPԶóӷʽ. μ19. 6. 2ڹHTTP/1. 0ͻԵй. 

Ϊάֳ, еıĶ4. 4Զ屨ĳ(ֹĳ). 

8. 1. 2. 2 ˮ

ֳ֧ӵĿͻˮ߷ʽ(ȴӦͶ). 뽫Ӧ𰴽ӵ˳򷢳. 

Ӻóˮ߷ʽĿͻӦóˮ߳ʧܺԵ׼, ڳδȷʱ. ͻΪڷӦ֮ǰͽӵط׼. 

ͻӦ÷ǵݷǵݷ(μ9. 1. 2). , ֹĴӻᵼ²ȷĽ. 

8. 1. 3 

ʹȷʵ14. 10涨ӱͷǷǳؼ. 

ӵĿͻ, ԭ()ӵź. ÿһӽԴ. 

һ̨HTTP/1.0ͻHTTP/1. 1(μRFC 2068 [33] йHTTP/1. 0ͻʵ"άֻԾ̬"ͷּ̽)

8. 1. 4 ʵʵĿ

ͨһʱֵ, һʱ伴άϵڷǻԾ̬. ѡһϸߵֵ, Ϊͻܻܿͬһ. ӷʽĲöڿͻʱ޾δκҪ. ͻϣʱֹʱ,  Ӧ淶ֹ. ͻӦʼעԷǷֹ, ʵӦ. ͻδܼʱ⵽Էֹ, ɲҪԴ˷. 

ͻ, , ʱֹ. , ͻ뷢µ, ʱȴر"". ڷ, ״±رյ,  ͻȴΪڽ. 

ͻ, ӷֹͬ¼лָ. ֻҪǵݵ(μ9. 1. 2), ͻӦԶ·Ӳش.  ԷǵݷвԶ, ûֹԱṩطĻ. ûӦóھ䷨ȷϿ˹ʽ. ʧ, Ӧ. 

ÿֻҪп, ӦӦһ. ǳͻ˵Ĺ, ӦڴӦ;Ͽ. 

ʹóӵĿͻӦĳһͬʱӵĸ. ûͻӦһϵ. ֮Ӧά2*N, Nͬʱߵû. 趨һΪ˸ĽHTTPӦʱұӵ. 

8. 2 ĴҪ

8. 2. 1 

HTTP/1. 1ӦֳӲʹTCPƻʱ, ֹӺָͻ˵. һ. 

8. 2. 2 г״̬ı

ͱĵHTTP/1. 1()ͻӦڴͬʱǷڳ״̬. ͻ˴, ӦֹͣĵĴ. Կ뷽ʽ͵(3. 6), һΪĿͿձβǰǱĽ. ǰ"ݳ"ͷ, ͻر. 

8. 2. 3 100״̬;

100״̬ĿڰЩͺĵĵĿͻڷ֮ǰƲͷǷԸ. Щʱ, ľñĵĻ, ͻĵķ;Ͷһ. 

HTTP/1. 1 ͻҪ

--- ͻڷ֮ǰȺ100()Ӧ, 뷢"100--""ڴ"ͷ(14. 20). 

--- ͻҪ, ÷"100--""ڴ"ͷ(14. 20). 

ڴھɵʵַ, Эͻ"100-" ȴûӵ417(ʧ)100()״̬ĻҾ.  , ͻһͷ򷢸δӵ100()״̬ԭ(ͨͨ)ʱ,  ͻӦڷǰڵصȴ. 

HTTP/1. 1ԭҪ

--- ڽӵ""ͷ"100-"ʱ, ԭ100()״̬Ӧ𲢼, ֹ״̬Ӧ. ԭڷ100()Ӧ֮ǰõȴ. ֹ״̬Ӧ, ȿɹرմ, Ҳɼݶʣಿ. ʱðͻķʽ. 

--- Ĳ"100-"""ͷ,  ԭӦ100()Ӧ. HTTP/1. 0()ͻʱҲ÷100()Ӧ. Դ˹涨һ⣺ΪRFC 2068, δ"100-"""ͷPUTPOST Ӧ100()״̬. һĿھ100()״̬δȴĿͻӳ, HTTP/1. 1, HTTP 汾޹. 

--- ѾӵӦĲֻȫ, ԭⷢ100()Ӧ. 

--- һıյ, 100()Ӧԭǹжϴ, ձ뷢ֹ״̬. 

--- ԭӵ"100-"""ͷ, , ڴӴӶ֮ǰӦֹ״̬, Ӧڶȫͻֹǰر.  , ͻ޷ɿ Ӧ. Ȼ, һҪڲвӦֹܾĹȱݵĿͻ. 

ԴҪ

--- ӵ"100-"""ͷ, ҴҪô֪һվѭHTTP/1. 1߰Э, Ҫô֪һվHTTP汾, ͬ""ͷһת. 

--- Ҵ֪һվ汾HTTP/1. 0, ת, ӦӦ417(ʧЧ)״̬. 

--- Ӧάһٻ, Լ¼½ʵһվHTTP汾. 

--- ӵڰ汾HTTP/1. 0()Ŀͻ, "100-"""ͷ, ת100()Ӧ.  һҪɸ1xxӦתһ(μ10. 1). 

824 رʱͻΪ

HTTP/1. 1 ͻһĵ"100-"""ͷ, ҿͻֱHTTP/1. 1ԭ, ڴӷӵκ״̬Ϣ֮ǰͷӱر, ôͻӦ. ʱ, ͻԲ"ָ㷨"ȷÿɿӦ

1 һ. 
2 ıͷ. 
3 ʼRΪͨʱĹֵ(ڽӵʱ), ޷ʱʱΪһֵ5. 
4 T=R*(2**N), NΪǰĴ. 
5 ȴĳӦT(ʱ϶̵). 
6 ûȵӦ, T. 
7 ͻӱǰֹ, ת1, ֱ󱻽, ӵӦ, ûͷֹԽ. 

⻷, ͻӵ״̬, 
--- Ӧټ,  
--- ĵķӦֹ


 

HTTP/1.1淽Ķ.Ȼչ, ӵķܱٶ͸չĿͻͷͬ.

Ӧͷ(14.23)еHTTP/1.1.

9.1 ȫ͵(Idempotent)

9.1.1 ȫ

ʵֳӦ֪ͨInternetϵĽû, Ӧϸû֪κǿܲȡж, ЩжܸԼ˴޷ԤϵĽ.

ر.ĹѾγ, GETHEAD˲ⲻӦбĲȡʩĺ.ЩӦñ"ȫ".û, POST, PUT, DELETE, ĳ, û֪ĳֲȫΪʵ.

Ȼ,  GETʵ, ܱ֤;ʵ, һЩ̬Դǵ.Ҫûû, ˲ӦΪ˳е.

9.1.2 ݷ

ҲԵݵ, (˳ֹ)N>0ͬĸú͵һ.GET, HEAD, PUT, DELETE., OPTIONSTRACEӦи, ݾĺ.Ȼ, пܼǲݵ, ʹзʵֶǵݵ(ʵֽͬ, , ֵʵֶ仯, ǵݵ)., һʵֵĽһк޸ĵֵ, вǵݵ.

ûиõǵݵ(ͬԴ²ͬʱ)

9.2  OPTIONS(ѡ)

OPTIONSURIȷ/ӦͨǷеϢ.÷ͻȷ豸, ԴûаʾԴʼԴؽµй, 

ַӦǲܻ.

OPTIONSһʵ(ָʾݳȻĴ), ýӦһȷ.Ȼֹ涨ûжκι, δHTTPչOPTIONSŸϸԵйطѯ.һ̨֧չķ.

URIһǺ("*"),  OPTIONSӦܵķضķԴ.ȻͨȡԴ, "*"ֻΪ"ping"  "no-op͵ķ;ֻͻԷ., ܱһ̨Ƿ֧HTTP/1.1.

URIһǺ("*"),  OPTIONSֻǵԴͨʱӦǷ.

Ӧ200ӦʾʵֺͿӦԴĿѡͷ, .ֹܰ淶δչ.淶ûж, δHTTPչܻᶨ, ݿܻѡʵӦʽ.ûӦ屻, ӦһֵΪݳ.

תͷضĴ.յԼľURIOPTIONSʱ, ת.תֵ, ֹתϢ.෴, شԼͨ.Ǵ, תʱ, ֵ𽥼С.ûи, תҲû.


9.3 GET(ȡ)

GETؽϢ(ĵʽ)URIȷ.URIָݲĹ, Ӧв, ķص, ǹ̵Դı, ıǹ̵.

Ϣ If-Modified-Since,  If-Unmodified-Since, If-Match,  If-None-Match,  or If-Rangeͷ,  GET彫"(conditial) GET". ֻͷ(conditional header)Ļ,  GETʵ屻. "GET"ڼٲҪʹ, ʹûжͻѾݵˢ»ʵ.

ϢΧ(Range)ͷ,  GET彫"(partial)GET", "GET"ֻҪ䲿ʵ, 14.35ָ. GETʽͨͻûеõȫĴʱֵؽٲҪʹ.

ֻеGET13֧HTTP豸ʱ, Ӧǿɻ.

ʹñʽʱ.ο15.1.3ڹڰȫĿ.


9.4 HEAD(ͷ)

ӦнֹϢ, HEADGETһ.HTTPͷԺӦͷͷϢPOSTȥӦGETϢͬ.ַڻùʵϢ, ûдʵıʾϢ.鳬ıӵЧ, ɵԺ.

ӦеϢǰԴʵʱ, HEADӦǿɻ.ֵʾʵ岻ͬڵǰʵʱ(⽫ݳ, -MD5, ETAGʱбֳ), ʵ.


9.5 POST()
POST õ, ԭոʵ, ʵΪURIָԴĴҪ, . POST ΪµĹͳһķ:

- Դע.
- ڵӲ, , ƵһЩϢ.
- ṩݿ, ȷϱݴĽ.
- ͨӵĲݿ.


POSTʵֵʵʹȡڷ, ȡURI.POSTʵURI, ĵڰĿ¼, ڵ, ¼ݿ.

POSTʵֵĲURIԼʶԴ., 2000(OK)2004(Ŀ¼)ǺʵӦ״̬, ȡӦǷʵ.

ԭѾԴ, Ӧ201()Ұ״̬, ָµԴʵһرͷ(14.30).

ַӦǲɻ, ӦʵĻƻֹͷ.Ȼ, 303()ӦֱûؽɻԴ.

POST 8.2ϢҪ.

μ15.1.3ڹڰȫԵĿ.

9.6 PUT()

PUTҪʵ洢ṩURI.URIָѾڵԴ, ʵӦԭ޸ĵİ汾. URIָĲѾڵԴ, URIԱͻµԴ, ԭԽURIԴ.轨Դ, ԭͨ201()Ӧ֪ͨû.޸Դ, 200(OK)204()Ӧʾĳɹ.ڸURIԴܴ, ĳӦӳ.ʵܺκβʵֵ-*(ݷΧ)ͷ, ʱ뷵501(δʵ)Ӧ.

󾭹ٻ洢URIʶһǰʵ, Щʵ彫.Ӧǲɻ.

POSTPUTĲͬ㷴ӳURIĲͬ.POSTеURIʶʵԴ.Դݽչ, һغһЩЭ, һעķɢʵ.֮յ,  PUTеURIʶʵ-û˽ʲôURIĺͷֹͼӦڱԴ.ϣӦڲͬURI, 

301(ƶ)Ӧ;ûԼǷı·.

ԴԱ಻ͬURIȷ., һһURIʶǰ汾, URIʶÿһضİ汾뿪., PUTһURI·, URIԭ.

HTTP/1.1ûжPUTӰԭ״̬.

PUT8.2ϢҪ.

ضʵ屨ͷ˵, POSTеʵͷӦӦPOST޸ĵԴ.

9.7 DELETE(ɾ)

DELELEҪԭͷURIָԴ.ַͨԭ˵ǿиֹ(ֶ).ͻܵѾʵ, ʹԭص״̬˵Ѿɹ.ʱӦδĻ, Ӧñʾɹ, ͷԴƵܷʵλ.

Ӧ״̬ʵ, ɹӦ200(OK), δƶ, ӦΪ202(), ƶӦ𲻰ʵ, ӦΪ204().

󾭹URIʶһǰʵ, Щʵ彫.Ӧǲɻ.

󾭹URIʶһǰʵ, Щʵ彫.Ӧǲɻ.

󾭹ٻ洢URIʶһǰʵ, Щʵ彫.Ӧǲɻ.

9.8 TRACE()

TRACEڵԶ̵, ӦòѭϢ.յĽӦӿͻΪ200ӦʵյϢ.յĽҲԭյתֵһ (14.31).TRACE󲻰ʵ.

TRACEͻ˽һյݺݲԻϢ.ɱͷֵҪ, Ϊʾ̵·.תʹͻĳ, ѭҳǰ·ĴǺõ.

Ч, ʵӦϢ, "Ϣ/http" -ʽ.ַӦֹ.

9.9 CONNECT()
˵бCONNECT̬ܶĴ(SSL [44]).

 

10.״̬붨

   ÿһ״̬汻, ѭķӦάϢ.

10.1 Ϣ 1xx

״̬һʱĻش, ֻ״̬кͿѡıͷ, ɿ, ״̬ûıͷ.ԴHTTP/1.0ûжκ1xx״̬, ʵ·Ͻһ1xxӦHTTP/1.0ͻ.
ͻ׼ڽͨӦ֮ǰһ߶1xxӦ, ͻڴһ100״̬ı. ڴֵ1xx״̬ӦҲᱻû˵Ĵ. 
     
ת1xxӦ, ǴͿͻ֮ϵж, ߳Ǵ1xxӦķ. (˵һתһʱһ":100-----", ͲҪת100شӦ).

1011   100 

  ͻӦúԼ. мӦڸ֪ͻĳʼѾյһûбܾ. ͻӦüʣµ, , Ǿͺ. 뷢һʼشӦʱ. ֪ⲿ״̬÷ϸ, ô뿴8.2.3½. 

1012 101תЭ

    ˽ⲢԸ˳ӿͻ, ııͷ, ΪľһӦЭı仯ʹܹ֮ʹ. תЭʹ֮ΪЩͨӦͷھ101ӦĿ֮Э. 

    ЭӦýʱʵת. , תΪһ°汾HTTPЭϰ汾ȸ, תΪһʵʱͬЭҲ, ͵ԴҪ

102 ɹ 2xx

״̬Ҫ˵˿ͻ󱻳ɹĽ, , ͽ

10.2.1 200 OK

     Ѿɹ. ͬӦһ𷵻صϢʹ÷. 磺

GET                    뱻ԴӦʵӦһ. 
HEAD          뱻ԴӦûбĵıͷӦз. 
POST           ߰жʵ. 
TRACE          ׶˷Ѿյİĵʵ

10.2.2  201 

ѾͬʱµԴ.´Դ͵ַͷԴרҵURIԱӦʵ巵صURIο.ӦӦðûûԴѡһϵԴ͵ַ.ʵĸʽͨʽͷýʽϸ˵.ķڷ201״̬ǰԴ.жִ, Ӧ202ӦӦ.

һ201ӦһΪ˸ոմʾĵǰʵǷֵEtagӦͷ, μ14.19. .

10.2.3 202 .

Ϊ˴, 󱻽, Ǵû.пܻ߲, Ϊڴʵʷʱ, пܱ.ûʲô豸Դ˵첽·״̬

202Ӧǹίе.ĿľΪһЩ, ûҪûֱִнӵ, (Ҳһָһֻһ).ʵӦ𷵻Ӧðǰ״̬, ͻһָ״ָ̬߹ʲôʱûڴɵĹ.

.
10.2.4 203  ȨϢ
ʵ屨ͷзصάϢԭõյ, ǴһصĻǵĿ.Ҳԭʼ汾ӼǸ.˵, йҲ±ԭʶάϢĸıעϢ.Ӧ÷, ֻеӦΪ200ʱ.


10.2.5 204 û

󲢲Ҫʵ, Ҳ뷵άϢ.ӦҲµĻĵʵ屨ͷʽάϢ, ЩǰĿı.

ͻǸû, ͲӦøıļ۵Ǹ󱻷͵ļ۵.ӦҪǹΪж뷢ûе¶ûļ۵ı, κµĻ˼άϢӦӦûڵ۵.

204ӦϽ, ڱͷ֮ĵһо.

10.2.6 205 
  
Ѿ, ûӦõ󱻷͵ļ۵.ӦҪǹжͨû뷢, ǶԸʽΪûɿʼһж.ӦϽκʵ.

10.2.7 206  ֲ

   ԴѾ˲GET.һΧͷ(14.35), 
   ָҪķΧ, Ҳпܰһʹ-Χͷ

   Ӧµıͷ:

һݷΧͷָӦķΧ, Ƕÿ˵һಿֵ/ֽڷΧʽݷΧͷ.ݳȱͷڵǰӦ, ôֵʵڱش͵OCTETƥ.

     -
     -Etagλ, ܹһ200Ӧжͬһͱͷ.
     -ֹ, , /߱仯, ֵͬһǰ͵Ӧеֵһ.
   
206ӦһʹǿȷϵĵΧĽ, ôӦӦðʵ屨ͷ. ӦһʹȷϵĵΧĽ, ôӦϽʵ屨ͷ, ôΪ˷ֹʵĺͷ֮ì., Ӧжͬһ󷵻ص200Ӧеʵ屨ͷ.

Etagϴθĵıͷϸƥ, Ͻһ206ǰ

һַ֧ΧݷΧĻϽ206()Ӧ.

10.3 ¶ 3xx.

״ָ̬ΪûҪĸһж.ж          ԱûûõûִвڵҽڵڶķGET HEAD.ͻӦյ¶·, Ϊÿһ¶˵Ļ·罻ͨ.

ע:ϰ汾Ĺ淶ƼΪ5¶.ݿӦ֪Ҳй᳹ƵĿͻ.

10.3.1 300 ѡ.
    
Դκһױʾ֮һ, ÿԴԼضַ, ΪʹûѡһѡıʾǸַ¶,  ЭϢԱṩ.
һHEAD, ӦӦаһϵûûԴѡʵԴԺ͵ַ.ʵʽʽͷúʽϸ˵.ûĸʽ, ʵǸѡпԶ., ֹ淶ûжԶѡı׼.һѡ, ôӦðΪ˹ǸضURI;ûΪԶ¶ʹõֵַ.ָôӦͿԻ.

10.3.2 301 ƶ

ԴѾһµõURI, κζԴδοӦʹ÷صURIеһ.б༭ĿͻӦöڱURIӿܵķзصһ߶οʵԶӲο.ӦǿԻĳָ.

µõURIӦӦеĵַ.󷽷HEAD, ӦʵӦðһָµURIĳııע

301״̬ڶӦHEADGEIյ, ûϽԶ¶Աûȷ, Ϊܻı.

ע:ڽܵһ301״̬Զ¶ĳһ, һЩִHTTP/1.0ûĽĳGET.

10.3.3 302 

ԴѾһµõURI, κζԴδοӦʹ÷صURIеһ.б༭ĿͻӦöڱURIӿܵķзصһ߶οʵԶӲο.ӦǿԻĳָ.

ʱURIӦøַ.ķHEAD, ӦʵӦðһ̵ָһµURIĳӵĳıʾ

302״̬һӦGEIHEADеĹбյ, ôûϽԶ¶λԱû֤ʵ, Ϊܱ仯ʵֵ.

ע: RFC 1945  RFC 2068 ϸ˵˿ͻı¶λʹõķ.Ǵڵû302Ϊһ303Ӧ,  󷽷λֵʵһGET.״̬303307ڷϣܹͻڴַ.

10.3.4 303 ۲Ĳ

ӦڲͬURIҵ, ӦӦڶԴGETµõ.ַҪΪԵű¶ûһѡԴ.µURIһԴο.303ӦϽ, Ƕڵڶ(¶)Ի.

ͬURIӦӦλķHEAD, ӦʵӦðһ̵ָһµURIĳӵĳıʾ.

ע: HTTP/1.1ǰû303״̬.ͻ֮Эͬעʱ, 302״̬ҲΪʹ, Ϊû303302Ӧ.

10.3.5 304 ֻ

ͻһGETҷҲѾ, ĵû޸, ӦӦЩ״̬.304ӦϽ, ɱͷ֮ĵһо.

Ӧ±ͷ:
-, ݿ14.18.1ֱ.

һʱԭЩ, ҴͿͻԼڼκγɱ׼Ӧȥ, Ṥ.

-Etagλ, ܹһ200Ӧжͬһͱͷ.

-ֹ, , /߱仯, ֵͬһǰ͵Ӧе       
   ֵһ.

GETʹǿĻ??(13.3.3), ôӦоͲӦʵ屨ͷ., ӦϽʵ屨ͷ, ӱ˻ʵĺͷ֮ì

304Ӧָ˵ǰδʵ, ôͱӦظ

ʹóΪ׼204Ӧȡʤ, ͱԼԷӳӦиκµֵ.

10.3.6 305 ʹô

ַıԴͨ.ַ˴URI. ͨظһһ.305Ӧԭ.

ע: RFC2068305¶һһ, Ҵֻԭ.Щƻ൱صİȫ.

10.3.7 306(ûõ)

306״̬ǰĹ淶ʹ, Ѿ, Ҳ.

10.3.8 307ʱط.

  ԴʱһͬURI.¶λʱܱ仯, ͻӦüʹURIԱ;.ӦֻеƻֹͷָʱǿԴ洢.

ʱURIӦӦеĵַ.ķHEAD, ӦʵӦðһ̵ָһµURIĳıʾ,  HTTP/1.1ǰû307״̬., ʾӦðûµURIΪظԭʼϢ.

307״̬ΪӦ𲻽GETHEADȷ, ôûϽ¶Աûȷ, Ҳǿܵ.


10.4 ͻ 4xx

״̬4xxרʹڿͻȥµ.ǵӦһHEADʱ, һεĽ͵ʵ, ԼǷһʱ˵.Щ״̬Ӧκ󷽷.ûӦûʾκΰʵ.

ͻڷ, ʹTCPķʵӦСԱ֤ڷصеʱͻյӦİ.ڹص֮ͻݸ, TCPѻᷢһư, ҲӻڷʼԼHTTPӦó򱻽͵, ͻ֪뻺.

10.4.1 400 

ڻε﷨.ͻӦظԼûиı.

10.4.2 401 δȨ

Ҫûļ.ӦڶԱԴսİWWWͷ.кʵ֤ͷ, ͻظ.Ѿ֤, ô401Ӧָ֤Щܾ.401ӦһӦͬսûѾ֤һ, ôӦøûӦиʵ, ΪʵпܰӦϢ.HTTP֤"HTTP Authentication: Basic and Digest Access Authentication" .

10.4.3 402 ֧
   
ִ뱻Ա㽫ʹ.


10.4.4 403 

, Ǿܾʵ.֤, ҲӦظ.ķHEADҷԸ⽫Ϊʲôûʵָߴ, Ӧʵܾ.뽫Ϣ߿ͻ, ״̬404(ûҵ)ʹ֮.


10.4.5 404 ûҵ

ûҵκοƥURI.õĻʱҲûκεļ.410״̬Ӧڷ֪ϵԴԶԵõĲûǰĵַ, ͨһЩڵĿõĻ, Ӧʹ.״̬뵱뾫ȷչʾΪʲô󱻾ܾߺʱûӦõʱ򱻹㷺Ӧ.

 

10.4.6 405 ķ

ָķURIָԴ.ӦһһЩڱԴЧķͷ.


10.4.7 406 

ָԴֻܲڷеĽܱͷвܵԵӦʵ.

һHEAD, ӦӦаһϵпõʵԺλ, ûûҳʺϵ.ʵĸʽͬʽͷýʽָ.˸ʽû, ѵѡԶ.Ȼ, й淶ûжκԴԶѡı׼

ע: HTTP/1.1з͵ĽܱͷܵӦ.ĳЩ, һ406Ӧ.ûȥӦıͷжǷԽ.

Ӧ𲻱, ôûӦʱֹͣոݲûѯǷҪһж.


10.4.8 407 ֤

ִ401, ָ˿ͻʹ֤֮Լ.践һ----֤ͷ, Ϊ˱Դڴս.ͻһʵĴ֤ͷһظ.  HTTP֤" HTTP Authentication: Basic and Digest Access Authentication"н.


10.4.9 408 ʱ

ڷ׼ȴʱ, ͻûв.ͻҲԺһʱظ.

10.4.10 409 ͻ

Դ״̬ĳͻοܲ.ֻûڴпܽͻύĵطʹ.ӦӦðûʶͻԴ㹻Ϣ., ӦӦжûûԽ㹻Ϣ.Ȼ, ҲǲܵĻǲ.

ͻͨᷢӦPUTʱ., 汾ڱʹöPUTʵкǰ()ͻԴıĻ, ʹ409Ӧָ., ӦʵܻһϵʽӦжְ汾֮.
10.4.11 410 ֹͣ
ϵıԴٿ, Ҳ֪ǰĵַ.ΪԶ.ӱ༭Ŀͻûͬ, ӦɾURIĲο.֪, û豸ȥǷõ, ״̬404(δҵ)ʱӦʹ.Ӧǲɱĳָ.

410ӦҪͨͨԴⲻɻúͷϣЩԶӵԴӶϢԮWEBά.ͨʱ, ӵķͲٷ˹ĵ˽ʵԴЩ.ǲҪעеòõԴ"û"Ǳעһγȵʱ-----ЩЩԼȥжϰ.


10.4.12 411 ĳ

ܾûжݳȵ. һЧ"еĳ"ݳȱͷ, ôͻظ.


10.4.13 412 Ԥʧ 

һ߶иԤڱ֤ʱᱻΪ.ӦͻԤڵǰԴάϢ(ͷ), ԷֹӦԴķĶҪһ.


10.4.14 413 ʵ̫

ܾһΪȷܺԸĻҪ.ܹصԷֹͻ.

ʱ, Ӧһ-֮ͷԱָʱʲôʱԺͻһ.
10.4.15 414 URI

ܾķΪURIȷԸ͵Ҫ.ֱȽϡܷ֮ڵλǡĽPOSTΪгѯϢGET, ǿͻ䵽һ¶URIڶʱ, ٻһЩʹù̶ȻԶߴURIķ⵽갲ȫ©ĺڿ͵Ĺʱ.


10.4.16 415 ֵ֧ý

ܾṩΪʵķһֲԴֵ֧ĸʽ.

10.4.17 416 Χ

Χͷ, ûзΧ˵ֵǰѡԴ, ٻûа--Χ--ͷ, Ӧ÷ͬ״̬һӦ.(ֽ-Χ, ζеֽڷΧ˵еĵһֽ???ֵȵǰѡԴĳҪ)

״̬뷵һֽڷΧʱ, ӦӦðһϸ˵ѡԴĳȵݷΧ.(14.16).ӦϽʹöಿ/ֽڷΧʽ.

10.4.18 417 ʧ

ͷԤϲܱʵ, , Ǵ, 󲻿ܱһ??ʵֵģ֤


10.5  5xx

Ӧ״̬ð"5"ʾ֪ԼдԼʵЩ.˵ӦһHEAD, ӦһʽĽ͵ʵǷʱõĽ͵ʵ.ûӦʾκΰʵû.ЩӦκķõ.


10.5.1 500 ڲ

Ԥϵķֹ.


10.5.2 501 ʵ

֧Ĺ. ʶķûκԴ֧ʱ, ǺʵӦ


10.5.3 502 

, һػǴʱ, ͻķյЧӦͼķ.


10.5.4 503 Իõķ.

ʱĹػ߷ά, ʱܴ.˵һʱһЩ.֪, ĳӦ-֮ͷָ.û-֮, ͻӦôӦһ500Ӧһ. 

ע⣺503״̬Ĵڲʾŷʹùʱ. Щֻ򵥵ľܾ. 

10.5.5 504 سʱ

, ػǴʱ,  URIָηһЩʸ, ûյʱӦ.

ע:豸ע:һЩչĴ֪400500DNSʱʱ.

10.5.6 505 HTTP汾֧

֧, ߾ܾ֧, ϢõHTTPЭ汾.ָܻǲԸʹͻһİ汾, ½3.1, ???????.ӦӦðΪʲôǸ汾Ϊֶ֧ΪʲôЭ鱻ֵ֧ʵ..


11.֤

HTTPṩһЩѡڷսûûṩ֤Ϣĵս-Ӧ֤.֤Ĵ, ͻ֤Ĺ淶" HTTP 淶:"֤"ϸ˵.˵ӹ淶в"ս""⽻"Ķ


12.̸

HTTPӦһûϢʵ.Ȼ, Ҫṩû""ʵ.ܲҵ, ڷʹ洢˵, еûͬĹ"ʲôõ"ж׼, ҲеûͬĽʵʽ.Ϊ, HTTPΪ"̸"ṩһЩ-----кֿܶܵıʾʱѡһѵıʾ.

ע: ⲻν"ʽ̸, Ϊ仯ıҲͬýʽ, ʹͺŵĲͬܵ, Ҳʹ˲ͬ.
κΰһʵĵĵӦп̸, ЩӦ.

HTTP̸ֿܵ:ĺʹ̸.̸໥, ǿԵ߻ʹ.ʹõһֱΪ͸̸еķ, ڵʹΪ˺ṩ̸еķṩĴ̸Ϣʱ.

12.1 ̸

һѱʾѡɷṩ㷨, ǾͽǷ̸.ѡǻӦпеĽͺĵضͷݻһЩʺϢ(ͻַ).

ڴпеıʾѡѵ㷨ڿͻʱ, ǵҪ"ѹ"͵һӦһ͸ͻʱ.Ϊ߷Ĺ, û԰ΪһӦԼѡͷ.


̸Щȱ:

1. κû˵ʲôѵʵǲܵ, ΪҪйûӦҪӵ;Ϣ.
2. ûÿһԼҲǺܵЧĲҶû˽ҲǱڵв.
3. ԭʵֺ㷨.
4.ܻһ, ΪڲͬʹͬӦ.

HTTP/1.1 ͨûܺûĲѡʹ̸гΪܵͷ: (½14.1), ???(½14.2), ܱ(14.3), (14.4), Լû(14.43).Ȼ, ԭЩߴ, ҿܻĸ仯ͬӦ, ͷ֮Ϣڴ˹淶ûжչͷ.

ͬıͷ
ѡӷ̸еıʾı.½13.6ڻвͬͷ÷½14.44ڷͬͷ÷.

12.2 ̸
ڴ̸, һӦѱʾѡڴԭյӦʵֵ.ѡǻһϵпõӦͨԼURIıʾ, аӦıͷʵ.ӱʾеѡԶʵ(ûô)˹ûӲĲ˵(ǳı)ѡ.

̸, ӦпܲͬͨʹõĳߴʱԭܹӼоûʱ, һ˵Ļ汻ɢغͼ÷.

̸ҲҪԻ滻ʾһȱ.ֻеʹʱӦЧ.Ϊ, 淶вûж֧Զѡκλ, ȻҲûֹκλƱչHTTP/1.1еչ.

ڵԸǲṩͬʹ÷̸еӦʱ, HTTP/1.1300(ѡ)406()״̬ʹ̸гΪ.

12.3 ͸ж

͸жǷʹ̸еĽ.汻һϵпõӦıʾұĳߴ类ʱ, ִдΪԴĺԭж.

͸̸зɢŵ,  ԭ̸й, ԼȷӦʱȥûʱ.

˹淶ûжκι͸жϵĻ, ȻҲûHTTP/1.1ʹõչֹչ.
13 HTTPеĻ
    HTTPӦͨû漼ܵķֲʽϢϵͳ. HTTP/1.1ЭԪضܵĽл. ΪЩԪЭǧ˿Ƶϵ, ໥áӰ. , 㷨ͷӦȵϸHTTPлĻǴ. 
    Ի漼Ը, һô. HTTP/1.1лĿǽڶ·Ҫ, ͬʱ·ӦҪ. ǰʹڶ̼, "" ﵽһĿ(13.2)ʹ󽵵, "֤"ﵽһĿ(13.3). 

  
    , ԺͷҪҪܷſ͸ȵҪ.HTTP1.1ЭԴ, ʹͻڱҪʱȷ͸.Ȼ, Ϊ͸Իרҵû, ҿͬĳЩӦò()., ЭҪ͸ȱ:
    ԴȷЭεķſ.
    նûȷķſ.

, HTTP1.1ЭҪ:
      1.ֶҪʱ, Эṩȫ͸.
      2.ЭԴûȷҿƲ͸.
      3.ЭδﵽҪ͸ȵӦ.        
˵:, , 豸ٵƾ߲ڱ˵۷Χ֮.й͸ȵľ, 豸Ӧ͸ȳϸķƻ͸Ƚشô.

13.1.1 ȷ
   , һȷĻ洢ѡӦ. (μ13.2.5, 13.2.6, 13.12)
     
1. , ԴյӦȷЧصĽԭͬ.(μ13.3)

2."㹻"(μ13.2).ȱʡֵ, ʾԴ, Դͻ
͵ıҪ(μ14.9);Դϸ˵, ôҪǶԴЧ.ĳһ洢ӦԴԴͱҪԲ, ؿ, ӦӦʵ汨ͷ(μ13.1.5, 14.46), ӦǱֹ(μ14.9).

3.  304(δ޸), 305(ؼ),  (4xx, 5xx)ӦϢ.

  
        ޷Դͨ, ӦȷĴӻ淢ʱ, Ӧ
Ӧ;, 򻺴Ӧ򾯸Ϣ˵ͨŹ.
        յӦ(һӦһ304Ӧ), Ὣת
ͻ, յӦˢʱ, Ӧתĸͻµľ
Ϣ(ȥѾڵľ汨ͷ).治ܽΪĳһӦڴ͹
"ʱ"˶ӦЧ, ⽫һѭ.һûյûоĹ
ʱӦӦûʾ.    


13.1.2 Ϣ
        ӦȲǵһֵҲ(fresh), Ӧ븽Ӿ, 
ʹһ㾯汨ͷ.˾汨ͷϢ͸ոնľ14.46, ˾
ͻȡʵж.
        ϢԱ;, Ƿ뻺й.ʹ, Ǵ״
̬ǰӦʵʴ.
        Ϣఢִʾ.һֱطɹ󾯸
ϢǷ벻ɾ.

   See section 14.46 for the definitions of the codes themselves.
1xx Ӧˢ»ط״̬ľϢ, طɺ󹦱뱻ɾ
    1xxϢȷһʵʱɻ.ɴ˲.
2xx һʵݻͷľϢ, ȷ϶, ڳɹ
     ȷϺҲܱɾ.

붨14.46

        HTTP1.0 洢ӦеоϢ, Ҳɾһྯ.
HTTP1.0ľϢһӵľ, 谭δHTTP1.1
ݴ󻺴澯.  
        ϢҲһı.ıʹκȻ, ҿ
ѡ׼õַ.

        ӦԸӶؾ, ͬһŵľ., 
ṩͬĴıӢͰ˹.
        Ӧ˶ؾϢʱ, еϢʾûǲ
Ҳǲʵ.˰汾HTTPδָϸ涨ʾȨ˳, ȴ
һЩʾ.

13.1.3 ƻ
HTTP1.1ЭеĻָʾ.ĳЩ, 
һҪȷָʾ, ûƱͷﵽ
һĿ.
          ƱͷͶָʾ, ȿ, Ҳ
Ӧ.ЩָʾȱʡĻ㷨.Ϊһ, Եıͷ
ݳͻʱ, Э취ʵԭ(Ϊ, ѡñ͸
ıͷ), , ĳЩ, ָʾԵ͸.

        ָʾ14.9

13.1.4ֱӵû
        ܶûûǻ., ûû
ָʵЧ. , ûϰڼϻƣκ
ֵ=3600. ûӦĬ͸ΪԵЧʵΪ, 
ûȷж. 
        ûѾ˻, ûӦûȷָ, һ
˸ıϢʾ, ͸Ҫͻ. Эͨû
ӦǷѾʧЧ, ʵʷʱ, ָʾҪʾ. ָʾǶ
, һͼ. 
        ûԻƵĸʹЧʷ, ûӦ
һ״̬ʾûԷֹûռ˶Դٹӳ. 

13.1.5 ;
           ĳЩ, Աѡû浱ûδʱʱ
Ӧ. һӦ, ʱΪ, 䵱Դ
ʱ, Ǳ. һһʧЧӦ, һ(ʹ
汨ͷ)Чû, ܴǱڵ. 

        Э黹ûȡʩõһֵĻµӦ. , 
ûȷһֵĻµ, ܷعʱӦ, 
ϻϵԭ޷ʵ. 
13.1.6 ɿͻƵΪ
           ԴϢԴ, ĳЩ, ͻҪ
ǷظӦʹЧ. ͻҪʹûƱͷ
ָʾ˹. 
   
        һͻָܽܵδȷӦʱޣָһ
ȷӦ. һͻָӦǰСʱ. Щ
ǿ˶ԻΪĿ, Խܷſ͸. 
   
        һͻҲָʧЧӦ, ֱﵽֵ. ˶Ի
Ŀ, ҲͿԴ͸ȵƷͻ. Բ
ʱַ֧˵Ǳ. 


13.2          (Expiration)ģ
13.2.1         ָģ
           ȫԴʱ, ״̬. 
ĸԴһȷδʱ, Ӧ
Ϣ. 仰˵, ϵܻظ
һӦ. 
  
        ָһӦȷԤڹʱ, ȷڵ
֮ǰ, ʵûз仯. ʱϸѡʱ, ͨԱ͸. 
   ˹ڻƽӦڻӦ, ֱӴݸͻ
һӦ. 
   
        һԴҪǿһ͸Ļȷÿһ, 
ָһȷѹȥʱ. ӦʧʱЧ, ˻Ӧ
𸴺֮ǰȷ֮. (14.9.4)        

   
        ԴǿHTTP1.1öȷÿ, Ӧ
ʹ"ȷ"ָʾ.(14.9)

        ָȷĹʱȿʹùڱͷ, Ҳʹ(Max_age)
ͷ.
        ʱ䲻ǿûˢʾԴֻӦڻ
, һĳԴ󷢳ʱ, ˻ƽԴĹ״̬. 
(13.13)

13.2.2         ʽ
        ԴṩȷĹʱ, HTTPΪ
ʽʱ, ȡʹͷֵ㷨һƵĹʱ. HTTP1.1˵
вδϸ㷨, ȴ. ʽڴ
Ӱ͸, Ӧʹ, ǹԴṩܴĹ
. 

13.2.3 (Age)
           Ϊ˽⻺ʵǷΪ, Ҫ֪Ƿѳʱ
. 13.2.4μ, μӦ򻺴ʵ
. 
        ڴáNOWʾмʱʱӵĵǰֵ. 
ʹHTTPЭ, Դͻ, ӦʹNTP[28]
ЭʱͬһȫԵľȷʱ׼. 

        HTTP1.1ЭҪԴڷÿӦʱһ
ͷӦʱ.(14.18)"ֵ"һʾڱ
ͷֵ----һʽ.

        ӻӦϢʱ, HTTP1.1ӦͷϢ.
ֵǻƵԴɻȷӦʱֵ.
        , ֵӦϢڴԴʼлפʱ
·ϴʱ.
        ֵ("age_value")䱨ͷֵ----һıʾ.
        һ˵ͨȫ;:
        1.ʱԴʱͬ൱, "NOW"-ֵ, 
Ϊ, ȡ.
        2.ԴʼлִHTTP1.1ȡֵ(age_value).

        ַӦ, Ǻϲ:
յֵ=MAX(NOW-DATA_VALUE, AGE_VALUE)
        ַܵõɿĽ.

        總ʱ, һЩҪʱ϶ڷӦһ
յ֮䱻.޶, һӳٻĵ.        

      corrected_initial_age = corrected_received_age
                            + (now - request_time)

        Ϊ·ֵһֵĲ֮ǰͷ, ǿ
ͨ¼󷢳ʱ總ʱ. յһֵʱ, ؽ
Ϊ뷢ʱй, յӦʱ. ⽫֤۾ʱ, 
ֶȶ. 
յӦʱ㷨ժҪ
      /*
       * age_value
       *      is the value of Age: header received by the cache with
       *              this response.
       * date_value
       *      is the value of the origin server's Date: header
       * request_time
       *      is the (local) time when the cache made the request
       *              that resulted in this cached response
       * response_time
       *      is the (local) time when the cache received the
       *              response
       * now
       *      is the current (local) time
       */

      apparent_age = max(0,  response_time - date_value);
      corrected_received_age = max(apparent_age,  age_value);
      response_delay = response_time - request_time;
      corrected_initial_age = corrected_received_age + response_delay;
      resident_time = now - response_time;
      current_age   = corrected_initial_age + resident_time;
        ϶ӢĸһЩ. 

        ʵĵǰǴӻʵ󱻷ȷϵʱ()
Уʼ. ʵһӦ, һ䱨ͷ뻺
ʵ嵱ǰһֵ. 

        Ӧд䱨ͷζⲻǵһӦ. ֮δ, Ϊǽ
лʹHTTP1.1ʱų. 
13.2.4         ڼ㣺
           ΪȷһӦǾ, Ҫ䱣޺бȽ, ļ13. 2. 3, ڽ㱣, ԼһӦǷѾų. , ֵκʽʾ. 
        áֵ("expires_value")ڱͷ, áֵƱͷ. (question?)
   
ڹ֮ǰָʾ, һӦг, 㽫÷ǳ. 

      freshness_lifetime = max_age_value

  , г֡Expires, £
      freshness_lifetime = expires_value - date_value

        ע㲻ʱӰ, ΪϢԴ. 
    Expires,  : max-age,   : s-maxage ( 14.9.3) δӦг, ӦԻû,  ʽ㷨freshness lifetime. 24СʱֲӦ113ž. 

, Ӧ޸ʱ, ʽֵӦʱƬ. ΪƬϵ10%
   ӦǷڷǳ򵥣

      response_is_fresh = (freshness_lifetime > current_age)

13.2.5 ֵ
        ڹֵϸƶ, ԿͬԴƶˢֵͬ. 
   
        ͻһ仺ˢµһָķǵһӦ, һʵеֵӦе. , ͻԺԴӦ. , Ҫ󡰻ơmax-age=0 ǿȼԴ. 
           ͬȷͬӦ, ʹڱͷǸ. 
13.2.6 Ӧ
        Ϊͻյ·Ӧ, ЩӦһػ, һЩӦһػ, ͻյӦ˳ԴӦ˳ͬ, ϣͻѡµӦ. 
        ʵǩ͹ֵӰӦ˳, һӦܴĹʱ. ֵľҲֻһ. 
        Ҫȷһʵ, ܵӦڱͷѴڵʵ, ͻӦظ. 

       Cache-Control: max-age=0

ǿκм仺ȷǵĸ. 

       Cache-Control: no-cache

ǿǴԴȡһµĸ. 
ֵͬ, ʹκһӦ. 

13.3        ȷģʽ
           ҪһʧʱЧĿӦͻ, ȱԴ
(һм仺)һĿǷȻ.ǳ֮Ϊ
"ȷ"Ŀ.ǲ뵱ĿΪʱΪٴӦ
, Ҳ뵱ĿʱҲഫһȦ, HTTP1.1Э֧ʹӦ.

          Э֧ӦĹؼΧ"ȷ"չ.Դ
һӦʱ, ͬʱһȷһֱŻĿ.һͻ(û
)ԺлĿԴʱ, ͬʱа໥ȷ.

          ˶Դȷ͵ǰȷ, ƥ(13.3.3), 򷵻
һض״̬(ͨΪ304)ҲĿ., Ӧ(Ŀ)
, ǱȷƥʱӦ, ͬʱҲڲƥʱ.

        HTTP1.1Э, һ˴رıͷ(ȷ)
Ľת㷨, ͨͷûв.

        ЭаȷϻƵͱ״̬.˵, 
ҽƥȷʱִ, Ҳڵҽûƥȷʱִ.

        ˵:ûȷӦҲԻ洢ҽֱܷų, 
ָȷֹ., ûȷ, 򻺴治Ļָ, ޷ˢ³Ǳų.
        
13.3.1 ޸        (Last-Modified Dates)
        ޸ıͷֵȷ.֮, һĿ޸ں
δ޸ΪЧ.
13.3.2         ǩȷ(Entity Tag Cache Validators)
           ǩӦͷֵ, һʵǩ, ṩһ"ģ"ȷ.⽫
ڲ洢޸Ϣ½пɿȷ, HTTPݲԴ
ʹ޸ڶ鷳.
          ʵǩ3.11, й䱨ͷ14.19, 14.24, 14.26, 14.44.
13.3.3         ǿ, ȷ
        ԴͻȽȷȷǷͬĿ, ͨϣʵ巢κα仯, ȷҲӦ仯, ȷΪǿȷ.
        ͬʱ, ڽڷҪ仯ʱŸıȷ.Դ仯ʱȷδر仯ĳΪȷ.
ʵǩͨǿȷ, Эṩһֻ־Copyright  www.cnpaf.net (2007).          All Rights Reserved.
ȷ.Ϊ, ǿȷʵÿһֽڱ仯ʱ仯, ȷϽʵ庬仯ʱű仯, ǿȷĳһضʵı־, ȷĳһͬʵı־.
ע: ǿȷϵ:һ, ÿʵ巢仯ֵ.
        һʵ޸ʱ()Ϊȷ, Ϊʵһڱ仯.
        ȷϵ֧ǿѡ.֧ȷϿɴȼĸЧ.
        ͻһȷϱͷаȷбȽʱҪõȷ.
        ǿȷϿκʹ, ȷϽڲϸʱſ.
        ͻԷGET, ǿ, ȷ.ͻڷʱ, ȷ.
HTTP1.1Э鶨ȷϵΨһǱȽ.ֱȽϹ, Ƿȷ.
        -- Ϊͬȿ, ȷȫһҾȷ.
        -- ȷȫͬ, һΪ"".

        Ǳȷ, ʵǩǿ.
        ޸ʱ䱻ȷʱĬΪ, Ǵй򵼳ǿĽ.
        ȷһڱ仯.

      
      -ȷܱûIf-Modified-Since  If-Unmodified-Sinceͷ. 
      -˻ʵһֵ, ԴӦʱ. 
      -޸ʱٱֵʮ. 

      -ȷѾм仺ͬʵȽϹ 
      -˻ʵֵ, ԴӦʱ.  
      -޸ʱٱֵʮ. 

        ַʵ:Ӧͬһڱͬ޸ʱ, һӦֵ޸ʱͬ.
        ͻڽ޸ʱûģȷִӷΧ޸, 
޸ʱǿȷʱſ.
        Դյһ, GETӦ, ʹǿȽϺ.
          ˹涨HTTP1.1Э, ͿͻԶԴHTTP1.0еõֵȫĽָ.

13.3.4         ںʱʹʵǩ޸ʱĹ
           ǶԴ, ͻͻһ׹ͽ涨ںʱ, 
ںĿ, Ӧúȷ. 
   HTTP/1.1 Դ
        -Ӧ÷һʵǩ. 
        -ԷʵǩҪܷǿȷ. 
        仰˵, http1.1˵, ȽϺõͬʱǿʵǩ޸ֵ.
        ˵:Ϊ֤͸, ͬʵظͬһ
ǿʵǩֵ಻ͬʵظʹͬһʵǩֵ.
   HTTP/1.1 ͻ
        -ʵǩ, κλʹôʵǩ.
        -ṩ޸ֵʱ, Ӧڷʹøֵ.
        -HTTP1.0ṩ޸ֵʱ, 򻺴
        ʹøֵ.
        -߾ṩ, ߾Ӧʹ.

        һյȰ޸ʱҲһʵǩ, 
һܷ304, Эõ.
        һHTTP1.1յʱ, һܷһػ
Ӧͻ, һµ.
        ˵:һǴ;ķϢ.
        HTTP1.0ͻͻʵǩ.
13.3.5 ȷ
           ͷıȽϲȷϻʵ.
13.4 Ӧ
             Ǳȷ, ϵͳԽһɹӦΪʵһֱ洢, ǱʵĿԲȷ϶, ɹȷ, ҲԷ.

        ˵:ĳЩHTTP1.0Υһʾ.
        , ĳЩ¿ܲ㱣һʵ, ䷵ظ.
   ע14.8ڷֹ洢ͻظһȵİȨͷ.        
          ״̬200, 203, 206, 300, 301410ӦܻᱻڻظӦ.
        һЩ״̬Ӧڻظ, ȷĻ
ͷ֮.

13.5 ӻӦ
           ĿǴ洢ӦϢӦ.ٺܶ, 
Ӧʵָ.һǰʵ, 
ܱ뽫Ӧϲ.

13.5.1 ˵˺Hop-by-hopͷ
        Ϊ建Ϊ, ǽͷֳ:
        ˵˱ͷhop_by_hopͷ(Լ򵥵Ĵ, , 
                                    Ҳǰ)
              
    hop-by-hop ͷ:

      - Connection                   
      - Keep-Alive                        
      - Proxy-Authenticate        ˼
      - Proxy-Authorization        Ȩ
      - TE
      - Trailers                켣
      - Transfer-Encoding        
      - Upgrade                        

Ϊ˵˱ͷ
13.5.2         ɸıͷ
           HTTP1.1ĳЩ, , ĳһ˵˱ͷֵ.һ͸
޸Ķ˵˱ͷǱͷҪȷ.
   
޸и, ǲ, Ҳ. 
      - Contents location
         Ŀ¼
      - Content-MD5
        
      - ETag

      - Last-Modified
        ޸ʱ

              - Expires

        Щ.ųͷ, 븳ֵӦ
ڱͷ.
       
        λָʾ.
      - Content-Encoding
        ݱ
      - Content-Range
        
      - Content-Type
        
        :Զ˵˱ͷĲҪ޸Ŀܵڽ߰汾Эǿļ
ƺʧ
        ݳȥ4.4.
13.5.3         ϱͷ(Combining Headers)
        ȷ, ظ304206Ӧ, 򻺴
Ӧظͻ.        
        ״̬Ϊ304, 򻺴ʹûʵıĹӦ, ״̬Ϊ206
ұǩ޸ʱǡƥ, 򻺴Խ洢ĺ͸յʵͲΪ
Ӧı( 13.5.4).

ʵеĶ˵˱ͷڹӦ, ų:
        -1xx汨ͷɾ
        -2xx
        -304206Ӧеıͷ滺ʵеӦ. 
Ҫɾʵ, յӦͷȡ˵˱ͷ. 仰˵, 
յĶ˵˱ͷǻʵеĶ˵˱ͷ. 
      
ע⣺˹Դ304206Ӧˢ»еӦʵ. 


13.5.4 ֽڷΧ
        һӦܽһĵһ, ִ, һܻ
յͬһĵĺü. 
   
        Ѿյĵһ, յһ, 
յݺϲ, յӦʵ庬ǿȷʱ. 

13.6 ̸Ӧ
     ʹ÷ת(12.1), Ӧеı仯ͷ˵,  ı˻Ӧظ͹.(ʹñ仯ͷ14.44)      
   
     Ҫñ仯ͷ֪ڶɻӦʲô
ͷ÷ת.仯౨ͷΪ"ѡ"ͷ.
  
        յָһCopyright  www.cnpaf.net (2007).          All Rights Reserved.
仯ͷĻʵĺ, ĻʵӦ, ѡеͷʼӦƥ.   
   
        ҽеѡͷԴǰһΪһʱΪƥ.ָ, ӦBNFλӻɾLWS, ߰4.2еϢͷϲϲͬĶϢͷ.

   
        һ仯ͷֵ"*"һ㲻ƥҶԸԴĺ, ֻܴԽ.
  
        ɵͷƥµ, ӦʵظӦ
һ󷢸ҷظ304, ʵǩݵַ˵
ʵ.
   
        һʵǩڱ־Ĵ, ǰݵӦҰ
ʵǩ.ʾ˻ոջʵ, κʵʵƥ, 304ӦеETagͷûʵɴ.еʵǩѴʵƥ, ӦӦˢ´ʵıͷ,  ظͻ.
   
        κѴڻʵʵĲ, ʵǩ
If-None-Matchͷ,  ǴǶһʵȫ.
  
        յһɹӦ, Ѵʵ岻ܻظӦӦñɾ.
  
13.7 ͷǹ

        ڰȫͱܿ, бҪֹͷǹ. ǹǽ
һûʹõĻ, , ʵİȫƿ. 
Ϊǹ. ЭָһЩԷֹ˽
ĶʧͿɴƵʧ. 

13.8 ͲȫӦΪ

        յӦʱҲԴ洢, ǱӦ. 
ӦԺϲ(13.5.4);ϲĻǲֵ.
ܰѲӦظͻ, ȷҪ.
        ͼȷһʵʱյ5xxӦ, ȿԽ䴫͸
ͻҲΪӦʧ. һ, ԻظһǰյӦ
ǻʵȷҪ󡰱ȷϡ

13.9  GET  HEAD ĸã

        ǷȷֹǵӦ, κԴӦGETHEAD㷨, 
Ӧӻ, ܵ´ĸ. ȷʵи, 
ھʱؿ. ǡԴɫ¡. 
   
һ⣺ЩӦϰquery URLsʱʹGETHEAD, Ӷĸ, 
ΪǵӦˢµ, Ƿȷʱ. ˵
ӻȡHTTP1.0URIsӦ. 

13.10 ˢ»ɾЧ
        ĳЩ㷨ԴԴĲʹһѴڵĻʵ岻
, Ϊ, Ȼǻǡʡ, ȴ׼ȷӳԴظ
Ϣ. 

        HTTPЭ޷֤дʵЧ. , Դ
ûʵĴ, , һЩ
ƵĴ. 

   
        , ʹһʵʧЧʾɾʵinstances, ߱Ϊ, ڻظӦǰȷ. 

        ĳЩHTTP㷨ؽ»ʹһʵʧЧ. ʵ屻URI
ͷᵽ. Щ㷨:

      - PUT
      - DELETE
      - POST

        Ϊ˷ֹܾ, URIͷʧЧ
URIͬʱŽ. 

          㷨ʱбURIָʵʧЧ. 

13.11 ǿдͨ( Write-Through)
        пܶԴԴ޸ĵ㷨ҪдԴ. ͨ
㷨GETHEAD. ڽתڵطӦǰ
ܶͻӦ. 

        ෴(write-back)HTTP1.1ǲ, ṩһ¸
ǳҷĹϱȡwrite-back. 


13.12 滻
        յһµӦ, ͬԴӦѱ, ҪӦ
ظǰ, ҽ뻺洢, ظб˻صľӦ. 
        ˵һڱͷѴӦɵӦǲɻ. 


13.13 ʷ¼

        ûʹʷ»ǰʵ. 
        ʷƺͻǲͬ, ʷԴĵǰ״̬ǲ͸, ׼
ȷ˵ʷ¼ʾûڻԴʱʲô. 
        Ĭ, ʱ䲻ʷ. ʵȻڴ, ʹ
ʷԿʾ, ûȷҪˢ¹ڼ¼. 
           ⲢܽΪֹʷƸûѾʱ. 

      
        ˵ʷ¼δֹûʱԴ, ⽫ǿƷṩ߱
ʹHTTPڿƺͻ. 

                            
14 ͷ
  ڶHTTP/1.1ֱ׼ͷ﷨. ʵͷ, ߺͽָǿͻ˺ͷ, ʵķͺͽ. 


141(Accept)

ͷͬϸ˵ضӦ˵Խܵýʽ.
ܱͷͬ˵, һСҪʽ˵޵, Ϊ
Ƕͼһ.

  Accept         = "Accept" ":"
                        #( media-range [ accept-params ] )

       media-range    = ( "*/*"
                        | ( type "/" "*" )
                        | ( type "/" subtype )
                        ) *( ";" parameter )
       accept-params  = ";" "q" "=" qvalue *( accept-extension )
       accept-extension = ";" token [ "=" ( token | quoted-string ) ]

ǺַýʽۼΪһΧ."*/*"ָеýʽ, "type/
*"ָĳʽͼ.ý巶ΧܰǸΧýʽ.
ÿý巶Χܸһ߶-.ʼΪĸ"q"Ĳָ
.κһͷĸΪ"q"ý巶Χͽֿܲ.Ҫ
ûûʹô㵽һֵָڴýʽ˵ϲ
س̶, ȱʡʱqֵ1. 

ע:qֿýʽӽչзֱ, ǰ
ϰ.ȻⱣκκĸΪqĲú巶Χһʹ, ¼
Ϊ̫LANAעбȱٵ"q"Acceptκýʽ
ϡ÷.δýʽע"q".
:
Accept: audio/*; q=0.2,  audio/basic
Ӧñ"ϲaudio/basic, Ѐ֮
õĻ, ͸ҷκƵʽ.ǰûнܱͷ, ôΪ
ǿͻеýʽ.ǰСCopyright  www.cnpaf.net (2007).          All Rights Reserved.
ܱͷܷ
ϽֵԽܵӦĻ, ôӦ÷һ406Ӧ.
һѡ
Accept: text/plain; q=0.5,  text/html, 
        text/x-dvi; q=0.8,  text/x-c
ͷϵ, Ա"text/htmltext/x-cѡýʽ, 
ǲ, ôǷtext/x-dviʵ, , text/plainʵ
."
ý巶ΧԲضý巶Χضýʽ.һý
ΧһʽĻ, ôضĲο."Accept: text
/*,  text/html,  text/html;level=1,  */*"µ:
1) text/html;leve=1
2) text/html
3) text/*
4) */*

һʽýʽҪؾѰкʽƥĵ
ȵýʽ, :
Accept: text/*;q=0.3,  text/html;q=0.7,  text/html;level=1, 
        text/html;level=2;q=0.4,  */*;q=0.5
ʹµֵй
text/html;level=1         = 1
text/html                 = 0.7
text/plain                = 0.3
image/jpeg                = 0.5
text/html;level=2         = 0.4
text/html;level=3         = 0.7

ע:һûܻᱻṩһĬϵضý巶Χֵ.Ȼ, 
ûǸرյϵͳҲԺ໥, ȱʡ
Լ.

142 -ַ(Accept-Charset)
   -ַͷָʲôװÿΪӦ.ӻضĿԵװõĿͻ֪ͨЩװĵķǷ.

Accept-Charset = "Accept-Charset" ":"
              1#( ( charset | "*" )[ ";" "q" "=" qvalue ] )

װõֵ3.4½.ÿһ??Էһʾû??ϲ̶ȵֵ.ȱֵq=1.һ:

Accept-Charset: iso-8859-5,  unicode-1-1;q=0.8

ֵ"*", ڽ-??ʾĻ, ÿһûڽ??
ʲôطװƥ.û'*'ڵǰ-??, ôû
ȷװöصõһΪֵ, ȥͬ¿Եõ1
iso-8859-1.ûн-??ͷڵǰ, ôȱʡþκװöǿ
ܵ.ǰڽ-??ͷҷܷ͸ݽ-??ͷԽ
ӦĻ, ôͻᷢһӦ406״̬, ڲɽӦ
͹ʱҲ, 

143 ձ(Accept-Encoding)
ձ(Accept-Encoding)ͷͽ(Accept), ޶Ӧпɽյ(content-codings)(3.5).
        Accept-Encoding  = "Accept-Encoding" ":"
                      1#( codings [ ";" "q" "=" qvalue ] )
       codings          = ( content-coding | "*" )
Examples of its use are:
       Accept-Encoding: compress,  gzip
       Accept-Encoding:
       Accept-Encoding: *
       Accept-Encoding: compress;q=0.5,  gzip;q=1.0
       Accept-Encoding: gzip;q=1.0,  identity; q=0.5,  *;q=0
ݽձ(Accept-Encoding)(content-coding)ǷɽܵķЩ:
(content-coding)ǽձ(Accept-Encoding)гһϵ(content-codings)еһ, ǿɽܵ,  a qvalue of 0.(3.9,  a qvalue of 0.˼ǲɽܵ)
ձ(Accept-Encoding)еš*ƥκαͷûȷгĿõ(content-coding).
(content-codings)ǿɽܵ, ߷qvalue(content-codings)ȵ.
"identity"(content-codings)ǿɽܵ, ض˵ǲɽܵ, Ϊձ(Accept-Encoding)"identity;q=0"Ϊа"*;q=0"Ͳȷİ"identity"ݱ.ձֵΪ, ֻ"identity"ǿɽյ.
ձ, Ҹݽձ뱨ͷܷͿɽյӦ, Ӧʹ406(Not Acceptable)״̬ĳӦ.

ûнձ, Լٶͻݱ., "identity"ǿõݱ֮һ, Ӧò"identity"ݱ, жϢ˵ݱԿͻ.

  ע:ûаձ, "identity"ǲõ, ܱHTTP/1.0ͻ(i.e."gzip" and "compress")һȵ.ͱ, һЩϵĿͻʾȷϢ.ҲԹûͻϢΪ.

  ע:HTTP/1.0Ӧó򲻳ϻصqvalues.ζqvaluesx-gzip or x-compress.


144 Ͽ
   The Accept-Language request-header field is similar to Accept,  but
   restricts the set of natural languages that are preferred as a
   response to the request. Language tags are defined in section 3.10.
ϿͷϿ, 涨һȻӦ.
ʶ3.10˵.
       Accept-Language = "Accept-Language" ":"
                         1#( language-range [ ";" "q" "=" qvalue ] )
       language-range  = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
ÿԷΧһƷ, ûԵӰ̶.Ʒ
ĬֵΪһ.:
   
       Ͽ: da,  en-gb;q=0.8,  en;q=0.7

   ʾ:ϲ, ҲܲеӢӢ.һԷΧӦһ
ʶõڱʶ, õڱʶǰ׺, һ
ǰ׺ıʶ'-'.ⷶΧ"*", Ͽг, Ӧб
ʶ. 

˵ʹǰ׺ƥ򲢲ʾûһֱʶ, Ҳ
дǰ׺ʶ. 
        ϿָԱʶƷƥʶԷΧ
Ʒֵ. ڴûԷΧƥ˱ʶ, ƷƶΪ0. 
ûϿﱨͷ, ӦԱͬ. 繻Ͽ
ﱨͷ, Ʒ0Ծǿɽܵ. 

        ÿзϿﱨͷ˵ɽ뱣û˽ʶ
۵, Դרۼ15.1.4
        ڿԸ߶ڸû, ƼͻӦû.
ѡû, вܼϿﱨͷ.
˵:ѡûɽʱ, ʵʵ, ûϤƥ
ϸ, Ӧʵʾ.

 


145շΧ(Accept-Range)
շΧ(Accept-Range)ӦͷԴĽշΧ:
           Accept-Ranges     = "Accept-Ranges" ":" acceptable-ranges
          acceptable-ranges = 1#range-unit | "none"
byte-rangeԴԷ
           Accept-Ranges: bytes
ûҪ.ͻԲbyte-range, ʹûյصıͷ.
Range units3.12.

κԴķΧ(range)ķԷ
            Accept-Ranges: none
ͻҪԷΧ(range).

146 (Age)
AgeӦͷʾ߶ԴʱĹ, ȻӦԴ.绺Ӧûг, Ϊл(fresh).13.2.3˵Ageֵļ.
                 Age = "Age" ":" age-value
                 age-value = delta-seconds
AgeֵʮƷǸ, Ϊλ.

ٻ洢յһܱʾֵ, Age, 봫ֵΪ2147483648 (2^31)Ageͷ. иٻ洢HTTP/1.1ÿһӦ(ĸٻ洢)Ageͷ. ٻ洢Ӧ31λ㷨.


147 (Allow)

 (Allow)ʵ屨ͷгɡCopyright  www.cnpaf.net (2007).          All Rights Reserved.
ָԴֵ֧ļַ--URI. һͷĿϸ֪ͨԴϵķЩ. ͷ405()Ӧ. 

="""" #

ʹʾ

          : GET,  HEAD,  PUT

һͷֹûʹ. ȻָʾӦִ. ԭڴÿһʱķ.  
PUTṩ, ԽԴ֧ĳЩ. һ֧Щ, Ӧиʵֵ֧ķ. 
Ϊûԭͨŵ, ʴ㲻ָз, Ҳ޸ͷ

148         Ȩ(Authorization)
ûϣ֤, յ401ӦûбҪ.ûͨAuthorizationͷ. Authorizationͷֵɰû֤Ϣ״, ЩûԴ.
             Authorization  = "Authorization" ":" credentials
HTTP AuthenticationHTTPʵݼ: Basic and Digest Access Authentication" [43].ض֤ͨ, ͬ״ԸЧ(ٶ֤Ҫ, ״ؽͬʱӶͬ)

ĸٻ洢(13.7)վ֤(Authorization)ʱ, 뷵ӦӦΪӦ, ǽ֮һ.
Ӧs-maxageָʾϢ, ٻӦӦ𲢷.(ѳض)ĸٻȱЧ, ͷԴ֤µ.(Ϊs-maxageΪ.)Ӧ"s-maxage=0", ֮ǰʹ֮Ч.

Ӧmust-revalidateָʾϢ, ٻӦӦ𲢷.ӦʧȥʱЧ, лȱʹЧԴһ, ͷԴ֤µ.

ӦpublicָʾϢ, ԱӦ𲢷.

149 -(Cache-control)

-ͨ-ͷڱ/ӦлƱصָ. Щָ涨һЩԤӦɲӰΪ. ͨȱʡĻ㷨.  ָǵ, ΪָĴڲζӦҲָͬ. 

עHTTP/1. 0ܲʵֻ-, ֻʵ
Pragma:-(μ14. 31). 

صӦó벻˻ָ䱾, ͨ, ΪЩָܶ/Ӧϵн߶. 

-="-""" 1#-ָ
-ָ="--ָ|-Ӧ-ָ
--ָ=
           "-"                           ; 14.9.1
         | "-洢"                           ; 14.9.2              
         | "-ʱ""=" delta-                         ; 14.9.3,  14.9.4
         | "-¾" ["="delta-]                       ; 14.9.3
         | "С-"["="] delta-                       ; 14.9.3
         | ""                            ; 14.9.5
         | "ʱ"                        ; 14.9.4
         |   -չ                         ; 14.9.6

-Ӧ-ָ=
"" ;                                                                 14. 9. 1
|"˽"["="<"" 1#"];                               14. 9. 1                                        |"޻" ["="<"" 1#"]                           14. 9. 1
|"洢"                                              14. 9. 2
|""                                              14. 9. 5
|"뾭ȷЧ"                                          14. 9. 4 
|"ȷЧ"                                      14. 9. 4
|"ʱ""="delta-                                         14. 9. 3
|"s-ʱ""="delta-                                       14. 9. 3
|-չ                                                  14. 9. 6

ָ1#ʱ, ָӦ. 

ָ1#ʱ, ڱ, Ӧ. һֿ֧չԣHTTPЭ齫İ汾ָͨӦHTTP/1. 1δʵ. 

-ָ ɷΪ¼ࣺ

-- ԿɻķΧƣֻԭָ. 
-- Իݵƣԭûָ. 
-- ԻЧƵĸĽԭûָ. 
-- ԻȷЧصĿƣܽûָ. 
-- ʵ崫Ŀ
-- ϵͳչ. 

1491 νɻ

ȱʡ, 󷽷, ͷӦ״ָ̬ӦΪɻ, ǿԻ.  13. 4ܽЩɻԵȱʡ.  л-ӦָԭȱʡӦĿɻԣ



ָӦɱٻ, ڸӦͨǲɻĻֻɲĸٻҲ. (μ14. 8, ֤ĸ)

˽

ӦĵвֶΪһû׼Ҳñ. 

ʹԭӦضԵһû, ûԲЧӦ.  ˽()ԻӦ. 

ע˽һʽӦںδɱ,  ܱ֤ݵ˽. 



ָ""ûָ, 򻺴ӦЩδԭȷЧĺ̵. 

ʹԭΪͳ¾ӦͻĸٻҲֹܷ. 

ָ""ȷʵָһ, ٻĻҪӦ.  Ȼ, ָӦЩδԭȷЧĺ. ʹԭֹӦĳЩͷظʹ, ͬʱӦʣಿ. 

עHTTP/1. 0ٻϳһָ. 

1492 Щɱٻ



""ָĿڷֹй¶Ϣ(ڱôŴ).  

""ָ, Copyright  www.cnpaf.net (2007).          All Rights Reserved.
Ӧз.  󷽷, ٻñӦκβ. Ӧ𷽷, ٻñӦӦκβ. ָԷǹ빲ٻ.  "ñ"ζŻؽϢڷŴ洢, ұ뾡ŬϢת󾡿Ŵ洢ת. 

ʹһָӦϵ, ûҲҪڻϵͳ֮ⱣӦ(ͨ"Ϊ"Ի).  ʷΪй±ЩӦ. 

һָĿĳЩϢδ֪żȻй©ûҪ. Ȼһָʹÿܸ˱, ֵѵ, ־Ǳ֤ԵĳֵĻɿĻ. 

1493 ԻʧЧƵĸĽ

ʵĹʱԭ""ͷ(μ14. 21)ָ.  , ҲӦе"-"ָ˵. Ӧ"-"-ָʱ, ӦڳֶͬһԴֵ(Ϊλ)Ϊ¾. Ӧе"-"ָζŸӦǿɻ(, ""), ǴϸĻָ. 

Ӧͬʱйڱͷ"-"ָ, -ָǹڱͷ, ڱͷеϸҲ. һʹԭɾ͸ӦΪHTTP/1. 1(µİ汾)ṩHTTP/1. 0Ĺʱ. ĳһHTTP/1. 0ͬʱӵԭʱ¿. 

HTTP/1. 0ᰴ뻺-Ӧָ""ȼ۵ķʽСڻӦֵĹֵ. HTTP/1. 1ӵӦ, Ӧ𲻺-Ʊͷ, ӦӦΪɻ, ӶHTTP/1. 0ļ. 

עڼвԵľɰ滺, һ̨ԭԸýµHTTPƹ, "˽"ָ. , ԭҪֵСڵֵĹڱͷ. ⽫ֹɰ滺󻺴Ӧ. 

s-

Ӧs-ָ, Թ(˽л), ɸָָ串ָڱͷָ.  S-ָҲʾ˴-ȷЧָľ䷨(μ14. 9. 4), Ҳ˵, ȾԭȷΪЧ֮ǰ, Щó¾˵Ŀ¼Ӧ.  ˽иٻԴs-ָ. 

ע, ˹淶ʵľɰ滺ִκλ-ָ.  Ҫʹû-ָƶǱHTTP/1. 1Ļлԭ-ָǹڱͷԼHTTP/1. 1Ļ-ָһʵ. 

ָû޸ĻʧЧ.  Щָָ

-

ͻԸ䲻ָʱ()Ӧ. Ҳ"-¾"ָ, ͻԸܳ¾Ӧ. 

С-

ͻԸ䱣Сָʱ֮()Ӧ. Ҳ˵, ͻҪһһʱڱֱʵӦ. 

-¾

ͻԸѾڵӦ.  ָ-¾Ϊĳֵ, ͻԸܹʱ䲻Ӧ. δָ-¾ɵֵ, ͻԸĳ¾Ӧ. 

-¾ָ, ڻΪӦʱԭ, շһ¾ɵӦ, ھӦһ汨ͷ, þ110(Ӧǳ¾ɵ). 

ٻɱóɲȷϾͷس¾Ӧ, ⲻӦκ""ȼĹڻȷϵҪ("-ȷЧ"-ָ)ͻ. 

뻺Ŀ"-"ָ, ȡ߼СֵĻĿıʳ̶. 


1494  ȷЧؿ

ʱûϣҪáCopyright  www.cnpaf.net (2007).          All Rights Reserved.
ԭ֮ȷϻĿЧ(ֻͨԭĴ·еһٻ), ǴԭػĿ. ˵˵ȷЧڻԭ߹˻ӦĹʱʱҪ. ˵ڻĿĳЩԭʴʱҪ. 

ͻûԼıػ濽, ν"δָĶ˵ȷЧ", ͻûбصĻ濽, ν"ָĶ˵ȷЧ",  пҪ˵˵ȷЧ. 

ͻû-ָָжеһ֣

˵

""-ָ, HTTP/1. 0ͻݵ"Pragma:".  

""ָвú. ӦʱʹûĿ. 

ָĶ˵ȷЧ

"-=0"-ָ, Ӷʹͨԭ·ϵÿһٻһ֮ȷĿЧ. ʼɿͻеȷģĻЧȷϹ. 

δָĶ˵ȷЧ

"-=0"-ָ, Ӷʹͨԭ·ϵÿһٻһ֮ȷĿЧ. ʼвЧȷϹ. ;һдԴĿ(ڵĻ)еЧȷģĻ-Чȷ. 

-

ת"-=0"ָʹȷ仺ĿЧ, ҿͻṩԼЧȷʱ, ЧȷܲͬڻĿִЧȷģ. һ, ڲӰ䷨͸Եǰ½еһЧȷģԼ. 
Ȼ, ЧȷѡӰ.  õķתԼЧȷģ. Ӧ304(δ޸), 򻺴ԽԼȷϺ󿽡Copyright  www.cnpaf.net (2007).          All Rights Reserved.
ͬ200(OK)Ӧһ𷢻ظͻ. µʵЧȷ, תʹǿȽϺȽϷصЧȷͻṩЧȷ. ͻЧȷԭһ, ת跢ͻ304(δ޸).  , ͷµʵ200(OK)Ӧ. 
""ָ, ðС-, -¾ɻ-ָ. 

ʱ

ĳЩ, ӼΪʱ, ͻҪִֻӦ, Ҫԭ֮ػȷЧ. Ϊʵһ, ͻа"ʱ"ָ. յһָ, ӦӦԷƵĻĿ, Ӧ504(سʱ)״̬.  Ȼ, һ黺ΪزڲϵõͬһϵͳĻ, ܻ黺ڲת. 

-ȷЧ

ڻܱΪԷָĹʱ, ҿͻܰ-¾ָ(ǰЧ), Э黹һԭҪʹȷϻĿЧԵĻ. 

ӵӦб-ȷЧָʱ,  ûĿó¾ɺ󲻾ԭȷЧԾӦ. (Ҳ˵,  ԭ""ͷ"-"ȡֵȷӦѳ¾, ÿζִж˵Чȷ. )

"ȷЧ"ָ֧ĳЩЭԿɿǱҪ. , HTTP/1. 1"ȷЧ"ָر, κԭ޷ԭ, 504(سʱ)Ӧ. 

ҽʵЧȷϵʧܻᵼ´Ĳ(δδִе)ʱ, Ӧ÷"ȷЧ"ָ.  ߲òȡκΥָԶж, ҲȷʧʱԶṩδȷϵʵ忽. 

䲻ᳫ, ܵϸƵûǿΥһָ, ôͬʱȷûṩδЧȷϵӦ. ÿһδȷϵķʶо, ӦҪȷû. 

-ȷЧ

˲ڷǹû֮,  "-ȷЧ"ָ"ȷЧ"ָͬ.  ڶԾ֤Ӧ, ûĻӦ, ԺȷϾͷӦ(ΪѾû֤), ͬʱȻҪڶûĴÿζȷЧ(Ӷȷÿһû֤ͨ).  ע־֤ӦҪ""-ָ, ʹǿԱ. 


1495 תָ
ת

ת()ʵǷתĳЩʵĵýǺõ.  , һ̨͸Ĵͼʽ֮ת, Խʡռ·ϵͨ. 

Ȼ, ЩתӦĳЩӦõʵʱ, صĲ. , ҽѧͼӦ, ѧݷͶ˵֤ڽյԭʵһضʵ. 

, İ"ת"ָ,  תͲøı13. 5. 2г"ת"ָӰıͷ. ζŻøıЩͷʵĵκη, ʵֵ. 

1496 չ

-Ʊͷͨһ-չ־ʹʵչ. ÿһ־һѡֵ.  ϢԵչ(Щı仺Ϊ)Բıָľ䷨. 

ΪչΪлָ.  ָ׼ָṩ, ǲָӦóȱʡذñ׼ָ涨Ϊ, ָӦó׼ָҪ. , -ָıЭ͵õչ. 

һչHTTPгʼHTTP汾л-ָĳЩչʽ, Լָĺ. 

, һеΪ"ͬ"Ӧָ, Ϊ"˽"ָ. ǶµָԱ˷ǹ֮, κֻɱͬһͬԱĻԻӦ. ԭUCIͬǵĹ֮ʹñ˽еӦ, ֻڸӦ룺

-ƣ˽,  ͬ="UCI"

һͷĻ㲻"ͬ"-չҲȷ, Ϊ"˽"ָ, ͻᰴȱʡİȫʽ. 

δϳĻ-ָ뱻ԣռٶ, κοδHTTP/1. 1ٻϳĻ-ָ׼ָ(Ӧȱʡɻ)ʹ, ӶǻΪչָʱҲܱȷ. 

1410 

һͷָĳһضеѡ, ҲɴԺд. 

ӱͷѭ﷨

="""" 1#(-־)
-־=־

HTTP/1. 1ת֮ǰӱͷ, ÿһ-־, ӱƿ-־ͬıͷ.  ѡӱͷе-־ָ, κθӵıͷ, ΪЩӱͷȱѡصĲʱ޷. 

ӱͷгııͷú绺-֮Ķ˵˱ͷ.  

HTTP/1. 1"close"ѡ, ԹӦ󽫱ر. 

ӣclose

ǳӦıͷ, ӲӦΪ/Ӧ""(μ8. 1). 

ֳ֧ӵHTTP/1. 1Ӧóÿһж"close"ѡ. 

յӱͷHTTP/1. 0(Ͱ汾)ĵϵͳΪÿһ-־ȥԱ֮ͬıͷ. HTTP/1. 1汾ĴתЩͷ. 

1411 ݱ

"ݱ"ʵ屨ͷΪý͵. ʱ, ֵʵĲ˺ָӵݱ, ӶúֽԻȡ""ͷָý. "ݱ"ҪĿʹļڲɥʧýݵͬʱѹ. 

ݱ="ݱ" "" 1#

3. 5ڶ. ӦʾΪ

ݱ룺gzip

(URI)ʵ. ͨ, ʵԱ뷽ʽ洢, ֻڷʹǰŽ. Ȼ, ͸ȷ֪ɱϿɵ¿ܻı, Ǳк"ת"Ļν. 

ʵ벻߱ͬһ, Ӧ÷ͬһݱʵ屨ͷ(14. 11). 

еʵݱԭԲɽ, Ӧ415(ֵ֧ý)״̬Ӧ. 

ʵöֱ, Ӧǵʹ˳г. 

ڱϢδ˵ʵ屨ͷ. 

1412 

ʵ屨ͷʵڵʹ. ע, ⲻһͬʵõ. 

ʵ="ʵ"""1#Ա

Ա3. 10ڶ. ԵҪĿûԼϲõȷϲʵ. , ֻԶ˵Ļ, ӦӦΪ

ԣda

δָ, ȱʡֵΪֵ. ȿָΪȻ޹, Ҳָ߲֪Ӧ. 

Ҫ, г. , ͬʱëӢ﷢е"Waitangi֮Լ"Ϳã

ԣmi, en

Ȼ, ʵжֲһΪֵĹ׼. "ѧ"֮ɽ̳, ȻӢڵ. , ǡ""Ӧֻ"en". 

Կý -- ıʽļ. 

1413 ݳ

ݳʵ屨ͷʮƻλָֽ˷ߵʵĵĴС, ʹHEAD, ָΪGETʱʵĵĴС. 

ݳ="ݳ"""1*DIGIT

ʾ

ݳȣ3495

ǰ4. 4ڵĹ򱻽, ӦóӦʹôָĵĴ䳤. 

κβСݳȾΪЧֵ.  4. 4δ֪ݳʱⶨĳȵķ. 

עĺMIMEеӦ. MIME, "/չ"͵ĿѡHTTP, ǰ4. 4ڵĹ򱻽, һĳڴǰȷ, Ӧʹ. 

1414 λ

λÿڴһԴURIλ÷ʵʱṩʵԴλ. ӦӦʵΪ˱ṩһλãԴͶʵϵ, Щʵλ, ɱֱʱ, ӦΪضķرṩλ. 

λ="λ"""(URI|URI)

λõֵҲʵĻURI. 

λֵԭURIֻжӦضʵԴλ. 

˺ȷضʵԴ, ָλURIΪURI. 

洢ΪʵλURIڷURIͿôʵӦһλURIµĺ. 13. 6, λÿִͬһԴõĶʵ. 

λURI, URIURI͵. 

PUTPOSTλñͷĺδɺ. 

1415 -MD5

RFC 1864[23], -MD5ʵ屨ͷʵĵMD5ժҪ, ṩ˵˵ʵĵıԼ(MIC). (עMICڼʵĴеżĶ, һܷϮ. )

-MD5="-MD5""" MD5-ժҪ
MD5-ժҪ=< RFC 1864 ĵ 64128MD5ժҪ>

-MD5ͷԭͻ, ʵĵԼ. ֻԭͻ-MD5ͷ򣻲ɴ, Ϊ˵Լļֵ. κʵĵĽ, , ɼժҪֵʵǷ. 

MD5ժҪļʵĵ, κõ, κζԱĽеĴ. ӵıд, ں˶-MD5֮ǰ. 

ɵĺǣժҪȫδ˳ֽڼ. 

HTTP RFC 1864ؿMIMEɵý(multipart/*, message/rfc822)ժҪ, ⲢıǰժҪ㷽. 

ɴ˲һϵӰ. ͵ʵĿܻĲ, ÿһֶԼMIMEHTTPͷ(-MD5, --, ݱ뱨ͷ). Ĳ--ݱ뱨ͷ, 򱻼ٶΪĲֵѾ봦, Ĳ-MD5ժҪ.  Ĳֲúд뱨ͷ. 

ժҪ˶֮ǰͽκζתΪCRLFʵʴıʹõĶתЭԭⲻĲժҪ. 

עȻHTTP-MD5RFC 1864йMIMEʵĵȫһ,  HTTP ʵڶ-MD5ӦȻмMIMEʵ. , HTTPMIME-, ʹôݱ.  , HTTPMIMEʹö, ֵǣ ڴ, ڼժҪֽҲͶĴֽ˳. , HTTPıഫʱֶЭ, ֻǹ淶ʹCRLFʽ. 

1416 -Χ

-Χʵ屨ͷ벿ʵһ, ָȫʵ, һӦӦںδ.  Χĵλ3. 12ж.  

-Χ = "-Χ"""-Χ-˵
-Χ-˵ = ֽ--Χ-˵
ֽ--Χ-˵ =ֽ-λ SP
                     ֽ-Χ--˵ "/"
                    (ʵ-|"*")
ֽ-Χ--˵ =(ֽλ "-" ĩֽλ) |"*"
ʵ-  =1*DIGIT

޷Ѳⶨ, ͷӦָȫʵĵܳ. Ǻ"*"ʾӦϢʱʵδ֪. 

ֽ-Χ-ֵָ(μ14. 35. 1)ͬ, ֽ-Χ--˵ָһΧ, ұĩֽڵľλ. 

ֽ-Χ--˵ĩֵֽСֵֽʵ-ֵСڵĩֵֽֽ--Χ-˵Ч. յЧֽ--Χ-˵ֵʱ߱Դֵ䴫κ. 

Ӧʱ״̬416(ķΧ޷)ķӦ-Χֽ-Χ--˵Ϊ"*". ʵ-ָѡԴг. ״̬Ϊ206()ӦӦ-Χֽ-Χ--˵Ϊ"*". 

ٶʵ干1234ֽ, ֽ-Χ--˵ʾֵΪ

ͷ500ֽڣ ֽ0-499/1234
500ֽڣ ֽ500-999/1234
ͷ500 ֽУ ֽ500-1233/1234
ĩ500ֽڣ ֽ734-1233/1234

HTTPİһΧʱ, (, ԵһΧ, һ黥иǵ©Ӧ)ڴʱ-Χͷ-ȱͷʾʵʴֽ. 磺

HTTP/1. 1 206 
ڣ ,  19951115 062524 (ʱ)
ϴ޸ʱ䣺,  19951115 045808 (ʱ)
-Χֽ21010-47021/47022
-ȣ 26012
-ͣimage/gif

HTTPİΧʱ(, ԶδصΧӦ), ǻᱻಿֱ.  

ڴĿĵĶಿý總¼19. 2Ϊ"multipart/byteranges".  ڸ¼19. 6. 3. 

ԵһΧӦ𲻵ʹmultipart/byterangesý. Զ෶ΧӦΪһΧ, Բֻһֵmultipart/byterangesýͷ. ޷multipart/byterangesĽĿͻڵһֽڷΧ. 

ͻڵһֽڷΧʱ, Ӧгֵ˳򷢻Ϣ. 

ھ䷨Чԭֽ-Χ-˵, ӦЧķΧͷ򲻴. (, ζŷغȫʵ200Ӧ. )

ӵͷк޷ķΧ(Ҳ, ֽ-Χ-˵ֵֵֽѡԴг)(-Χͷĳ), ӦӦԴ416(ķΧ޷)(μ10. 4. 17). 

ע ͻ޷㷶Χͷָһ416(ķΧ޷)200(OK)Ӧ, Ϊзһͷ. 

1417 -

-ʵ屨ͷָߵʵĵý, HEADָΪGETʱ͵ý. 

-="-"""ý

ý3. 7ڶ.  ʾ£

-ͣtext/html; charset(ַ)=ISO-8859-4

721ṩ˹ȷʵýͷĽһ. 

1418  

  ͷϢںʱ, RFC822еORIG-DATEһ. ֵһ3. 3. 1HTTPڣRFC1123[8]ݸʽ. 

      Date="Date"""HTTP-date

  ٸ

         Date:Tue, 15 Nov 1994 08:12:31GMT

ԭеӦбһͷ, Щ
 Ӧ״̬ʱ()񣱣(ѡЭ), Ӧڷѡаͷ. 

2 Ӧ״̬봫ͷ, 磵()񣵣(ɴ), ûѻ򲻿ܲЧ. 

3 ûʱ, ṩĵǰʱĽֵ, ӦûҪͷ, ±
14181еĹ. 

һյϢûͷĻᱻ߼һ, ϢǸ߻ش沢һҪڵЭ. һûʱӵhttpִвܻûʹ֮ÿһʹЧӦ. һhttp, رһĻ, ʹһֻʹɿʱӱͬ. 

ͻڰʵϢзͷ, PUTPOSTĹ, . һûʱӵĿͻ˲зͷ. 

һͷеhttp-dateûҪһϢĲںʱ. ϢõںʵĽֵ. ִûзһǡ൱ȷںʱ. ˵, ڱʵ֮ǰһ, ʵ, ϢκʱʱӰ. 

14181 ûʱӵԭ

  һЩԭִпûпõʱ. һûʱӵԭָһӦϿά޸ĵֵЩֵǺϵͳûɿʱԴ. ָһֵֹ֪, ڷõʱǰ, ǹȥ(ӦԤֹÿԴķֵָ). 


1419  ETag

EtagӦͷṩĵǰʵǩ. ʵǩһʹõıͷ14. 14, 14. 26, 14. 44. 

ʵǩڱȽͬһԴĲͬʵ. (μ13. 3. 3)

Etag="ETag" "Etag"":" ʵ-ǩ



      ETag: "xyzzy"
      ETag: W/"xyzzy"
      ETag: ""


1420 

ͷָͻҪضķΪ. 

=""""1#ֵ
ֵ="100-"|ֵ-չ
ֵ-չ=["="(|-ַ) *-]
-=""["="(|-ַ)]

ֵ䲻ݵķӦӦĳ״̬.  ޷, Ӧ417(ʧ)״̬.  , ӦӦ4xx״̬. 

ͷտչ﷨, 㽫չҪ. ӵֵ֧-չ, Ӧ417(ʧ)״̬. 

ֵıȽ϶δõı("100-")ǶԶԸе, ַ-չǶԸе. 

վеģHTTP/1. 1޷ʱ.417(ʧ)״̬.  Ȼ, ͷȴǶ˵˵ģһת. 

ɰHTTP/1. 0HTTP/1. 1Ӧóͷ. 

μ8. 2. 3100()״̬ʹ. 

1421 (Expire)

""ʵ屨ͷںպʱ֮Ӧ𼴱Ϊ¾. Ⱦԭ(дʵ¿н)ȷΪЧ, һ㲻᷵س¾ɵĻĿ¼ֵ.  μ13. 2жԹģ͵. 

ʽΪ3. 3. 1HTTP-ڶľʱ䣻 RFC 1123ڸʽ

="""" HTTP-

ʹʾΪ

ڣ , 1994121,  160000 ʱ

עӦʱν(μ14. 9. 3)Ļ-, νøǹ. 

HTTP/1. 1ͻͻЧ, Ǻ"0"ֵڸʽȥֵ("Ѿ"). 

ҪӦΪ"Ѿ", ԭ뷢ͺڱͷֵȵĹֵ. (μ13. 2. 4ڵĹڼ)

ΪӦΪ"", ԭ뷢͹ڷӦʱһҵĹ. HTTP/1. 1ӦͳһĹ. 

ԭɱӦ, ǻָ, 

ڱͷнĳһںʱֵǱӦ,  

1422 From
    Fromͷ, Ļ, Ӧ(SHOULD)û˵ĻE-MAILַ. ַӦ(SHOULD)ڻ, RFC 822 [9]ﶨġmailbox"ԼRFC 1123 [8]޶ģ
    
    From   = "From" ":" mailbox
    磺
          From: webmaster@w3.org

    ͷ(MAY)¼־ĿĺΪ֤Ч߶Դķ. Ӧ(SHOULD NOT)ȫʽķʱ. ĽΪĳִ, еִе. ر, ԶƴӦ(SHOULD)һն˳Ļ, ԶƳεܹõϵ. 

    ĻE-MAILַ(MAY)ӷĻз. , һͨһӦ(SHOULD)ʹԭߵĵַ. 

    ͻӦ(SHOULD)ûеõû׼From, Ϊܺûĸվİȫ߳ͻ. ǿҽûκһ֮ǰܹȡ, Ȩ, ޸ֵ. 

1423 (Host)
    (Host)ͷ˵ԴĻͶ˿ں, ͰûύԴָԴURI(һһHTTP URL, 3.2.2). Hostֵ(MUST)ԴURLԴػ߷Ȩ. ԴڲȷURL, 絥IPַжķĸ/URL.
    
    Host = "Host" ":" host [ ":" port ] ; 3.2.2

    һûκ׷ٶ˿Ϣġʾʹȱʡ˿(, 80ӦHTTP URL). , Դ϶<http://www.w3.org/pub/WWW/>ȫ
      
       GET /pub/WWW/ HTTP/1.1
       Host: www.w3.org

еHTTP/1.1Ϣпͻ(MUST)Hostͷ. URIĻ, ôHostͷ(MUST)ǿֵ. 

һHTTP/1.1Ĵ(MUST)ȷǰݵκαȷʵʶʵHostͷ. лڻHTTP/1.1(MUST)κȱHostͷHTTP/1.1Ӧ״̬400(). 

5.219.6.1.1ں. 

14. 24 If-Match
    
If-Matchͷһַʹ. ǰԴõһʵĿͻܹУЩʵеһڰIf-Matchͷһϵϵʵǩ. ʵǩ3.11ڶ. ĿöԱͷķԸٻϢЧ. ҲڸʱֹԴĴ汾ʶ޸. Ϊһ, *ƥκԴʵ. 

       If-Match = "If-Match" ":" ( "*" | 1#entity-tag )

κһʵǩƥڶGETӦзصʵʵǩ, *ԼǸԴκִʵ, ô(MAY)ִķͺIf-Matchͷ򲻴һ. 

(MUST)ùǿıȽϺȽIf-Matchеʵǩ. 

ûһʵǩƥ, ߸ˡ*ûеʵ, һҪ(MUST NOT)ִķ, ҷ412Ӧ(Ԥʧ). ͻϣֹµķ, PUT, ޸ԴӿͻһҵԺѾıԴʱ, ΪǺõ. 

󽫻ᵼ³2XX412κ״̬, ûIf-Matchͷ, ôIf-Matchͷ(MUST). 

"If-Match: *" ĺǵԴ(ٻ, ܿʹVary, 14.44)ѡıʾʱ, Ӧñִ, ҵʾʱ, һҪ(MUST NOT)ִ. 

ҪԴ(PUT)(MAY)If-MatchͷźӦIf-Matchֵʵ(ʵǩ)Դıʾ󷽷Ӧ(MUST NOT)õӦ. ûԴѾıǲ֪Ļǲϣɹ. 
磺

       If-Match: "xyzzy"
       If-Match: "xyzzy",  "r2d2xxxx",  "c3piozzzz"
       If-Match: *

If-MatchͷIf-None-MatchIf-Modified-SinceͷĽ淶ûж. 

1425 If-Modified-Since

    һַʹIf-Modified-SinceͷʹıԴ˵ʱûб޸Ĺ, ʵ彫ӷأ෴, 304Ӧ(û޸ĵ)ûκαʵ. 

       If-Modified-Since = "If-Modified-Since" ":" HTTP-date

һǣ

       If-Modified-Since: Sat,  29 Oct 1994 19:43:31 GMT

    If-Modified-SinceͷûRangeͷGETֻԴIf-Modified-Since ͷʱ֤ʵѾ޸Ĺ, Żᱻ. 㷨µ

        a)ͨᵼ³״̬200֮κ, ݵIf-Modified-SinceЧ, ӦͶGETӦȫһ. ȷڵʱЧ. 

        b)ԴIf-Modified-SinceѾ޸, ӦͶGETȫһ. 

        c)ԴһЧIf-Modified-Sinceû޸Ĺ, Ӧ÷Ӧ304(û޸). 

    ĿöͷСĴЧĸ¸ٻϢ. 

        עͣRangeͷ޸If-Modified-Sinceĺ壻ϸϢ 14.35. 

        עͣIf-Modified-Sinceʱɷ˵, ʱӿܺͿͻĲͬ. 

        עͣһIf-Modified-Sinceͷʱ, һЩʹþȷıȽϺԲĺ, ǷӦ304(û޸). ٻȷϷIf-Modified-SinceͷʱΪ˵õõĽ, ͻֻҪܾͲôǰLast-Modifiedͷյľȷַ. 

        עͣͻIf-Modified-SinceͷڴLast-ModifiedͷõĶͬ, ͻӦע⵽ɷʱ͵ʵ. ڿͻͷ֮ʱĲͬ, ͻӦÿʱӲͬ. ڵһʱͺIf-Modified-Since֮ĵѾı־Ŀ, ԼIf-Modified-SinceӿͻõûеõʱӵʱбйĿ. 練Ӧʱԭͻͷ֮Բͬʱ׼ѵĽ. 

    If-Modified-SinceͷIf-MatchIf-Unmodified-SinceͷĽ淶ûж. 

 

1426 ƥ䡱(If-None-Match)
        If-None-Matchͷһʹ㷨ʹ. һѴԴ˻
ʵĿͻУóЩʵûͨIf-None-MatchͷӦʵ
ǩͨ. ĿǴﵽС۵ĸЧϢˢ. ҲԷֹһ
Щ㷨޸ĿͻΪڶʵʴڵԴ. 

        Ϊ, ֵ*ƥԴκεǰʵ. 
       If-None-Match = "If-None-Match" ":" ( "*" | 1#entity-tag )


        κʵǩ뽫ظGETʵƥ, *
ԸԴʵ, ִб㷨, Դ޸
ݲƥIf-Modified-SinceͷṩӦݶҪ. 
֮෴, 㷨GETHEAD, Ӧظ304Ӧ, ƥʵ
Ļرͷ. 㷨, ظ412״̬. 


           13.3˵жʵǩƥ.ȽϺֻGETHEAD. 
   
        ûʵǩƥ, ִб㷨ֻIf-None-Match
ͷ, ͬʱҲеIf-Modified-Sinceͷ. , û
ʵǩƥܻظ304Ӧ. 
        ûIf-None-Matchͷջظ2xx304Ӧ, 
If-None-MatchͷһҪ. (13.3.4)
    "If-None-Match: *"˼ǣԴѡĴ(representation)
ʱ㷨öʱ ڷֹPUT______ʱ
.

     
     :
       If-None-Match: "xyzzy"
       If-None-Match: W/"xyzzy"
       If-None-Match: "xyzzy",  "r2d2xxxx",  "c3piozzzz"
       If-None-Match: W/"xyzzy",  W/"r2d2xxxx",  W/"c3piozzzz"
       If-None-Match: *

           If-None-MatchͷIf-MatchIf-Unmodified-Since(˺󲻿
޸)ͷڴ˵в


1427 If-Range
ͻ仺ʵĲֿ, ϣ򻺴ʵĸº󿽱, GET(If-Unmodified-Since If-Match߼ûֻȡһ)ʹ÷Χͷ. Ȼ, ʵѱ޸Ķ, ͻҪٴηȡǰʵĵ. 

If-Rangeͻءڶ.  Ҫ˵, 京Ϊʵδı, 뷢ȱٵĲָң, ʵ塱. 
ͻ߱ʵʵǩ, ϴ޸, If-Rangeͷʹô(ͨһַֺϷHTTPʽʵǩ). If-RangeͷӦֻͷΧͷһʹ, 󲻺Χͷ֧ǷΧʱ뱻. 
If-Rangeͷиʵǩʵ嵱ǰʵǩǺ, Ӧʹ206()ӦָʵǷΧ.  ʵǩ, Ӧʹ200(OK)Ӧ𷵻ʵ. 


1428 If-Unmodified-Since
If-Unmodified-SinceͷʹĳΪ. Դڴָʱ֮δ޸, ӦIf-Unmodified-SinceͷڵķʽִĲ. 

ıڸʱ֮ѱ޸, ִĲ, ұ뷵412(ǰ)Ӧ. 
      If-Unmodified-Since = "If-Unmodified-Since" ":" HTTP-

   Ӧʵ:

       If-Unmodified-Since: ,  19941029 19:43:31 ʱ

(ûIf-Unmodified-Sinceͷʱ), õ2xx412״̬Ľ, If-Unmodified-SinceͷӦ. 
ָЧ, ౻. 
˵δһIf-Unmodified-Sinceͷ, If-None-Match If-Modified-SinceͷĽ. 


1429 ϴ޸
ϴ޸ʵ屨ͷָԭΪıϴα޸ĵںʱ. 

ϴ޸="ϴ޸"""HTTP-

Ӧʾ£

ϴ޸ģ ڶ,  19941115,  124526 ʱ

˱ͷȷкȡԭĴԭԴ.  ļ, ָܽʾļϵͳϴ޸ʱ.  Զֵ̬ʵ, ָɲֵϴ޸ֵһ.  ݿض, ܾǼ¼ϴθʱ.  , ϴڲ״̬ıʱ. 

ԭ÷ͳڷɴ˱ʱϴ޸.  Դϴ޸ζŽĳһʱ, Աȡ֮. 

ԭӦڿӦֵʱ̻ȡϴ޸ֵ.  ߿Ը׼ȷĹʵ޸ʱ, ʵӦʱǰĶʱΪ. 

HTTP/1. 1Ӧܷ"ϴ޸"Ϣ. 

1430 λ(Location)
ӦڹɻԴȷϵ, URIλӦͷʹռطĳַ.201(Created)Ӧ, λԴ.3xxӦ.LocationӦָĹԴԶضѡURI.ֵɵԵURI.
                      Location       = "Location" ":" absoluteURI
磺

       Location: http://www.w3.org/pub/WWW/People.html

ע: Content-Locationͷ(14.14)ͬLocation,  Content-LocationʵԴַ.ӦпܼLocationͷ, ҲContent-Locationͷ.13.10һЩĻ.

1431 ǰ(Max-Forwards)
ǰͷṩһִTRACE(9.8)OPTION(9.2)ĻЩܹһطתĴ.ͻԸһƺʧܻмѭʱ, һʮ.
       Max-Forwards   = "Max-Forwards" ":" 1*DIGIT

ǰֵһʾʣתʱʮ.

ÿؽܰǰͷTRACEOPTIONʱתǰCopyright  www.cnpaf.net (2007).          All Rights Reserved.
ֵ.յֵzero(0), һת;෴, սһӦ.յǰֵ0, ת͵Ϣһǰ, ֵһ.

Ա˵鶨Լκûȷһֵչ, ǰͷԱ.

1432 ʵ(Pragma) 

   ʵóͷִָ, /Ӧκνն. ЭĹ۵еʵָʾϸĿѡΪ, һЩϵͳԱҪЩΪָʾһ. 

            Pragma                ="pargma"":"1#pragma-directive
            Pragma-directive         ="no-cache"|extension-pragma
            Extension-pragma        =token["="(token|quoted-dtring)]

һǻָʾϢ, Ӧóԭ, ǸڱĻĸ. ʵõָʾͷǻָʾ(14. 9)һ, ĶΪ˺http/1.0һ. һǻ͵һ֪Ƿ֧http/1.1ķ, ͻ˱ͷ. 

ʹָʾ뱻Ӧó, ܶЩӦóû. ΪЩָԱ/ӦϵнӦ. ΪһĽ߶һʵ, Ȼ, ʵָʾ뱻صĽߺ. 

  HTTP/1.1ٻ"Pragmano_cache"ͻ˷"cache_control:no-cache".httpвµָ. 

     ע⣺ΪPragma: no-cache˼ûΪӦͷʮֶ, ṩɿӦCache-Control: no-cache. 
1433 ֤(Proxy-Authenticate)
֤Ӧͷ407Ӧһ.ֵɱʾ֤ĸӦURIĴĲ.
       Proxy-Authenticate  = "Proxy-Authenticate" ":" 1#challenge

HTTP֤"HTTP֤:ͷ֤"[43].www֤ͬ, ֤ͷӦڵǰ, Ӧתοͻ., мҪοͻԼ֤, ʱתʹ֤ͷ.

1434 Ȩ
ȨͷͻԼ(ʹ)Ҫ֤Ĵһ.ȨֵɰûԴȨϢڱԴ. [ע]realm:ݿеһ߼, Լݵľۼȫ()ֵ.
       Proxy-Authorization     = "Proxy-Authorization" ":" credentials

HTTP֤"HTTP֤:ͷ֤"[43].Ȩͬ, ȨͷӦһҪ֤ش, õǴ֤.ʹʱ, Ȩͷɵһڴյ֤ش.Դӿͻһת֤, ǴЭ֤ͬĻ.

1435 Χ
14.35.1 ֽڷΧ
ȻеHTTPʵ嶼ֽʽHTTPϢʾ, ֽڷΧĸκHTTPʵ嶼.(еĿͻͷҪֽ֧ڷΧ.

HTTPֽڷΧӦʵ(غϢһ)ֽ.

һֽڷΧȷֽڵĵһΧ, һһʵһ鷶Χ.

       ranges-specifier = byte-ranges-specifier
       byte-ranges-specifier = bytes-unit "=" byte-range-set
       byte-range-set  = 1#( byte-range-spec | suffix-byte-range-spec )
       byte-range-spec = first-byte-pos "-" [last-byte-pos]
       first-byte-pos  = 1*DIGIT
       last-byte-pos   = 1*DIGIT

Byte-range-specFirst-byte-posֵһΧһֽڵƫ.
last-byte-posֵΧһֽڵƫ;Ҳ˵, ȷֽλð.ֽƫʼֵΪ.
last-byte-posֵ, һڻǸbyte-range-spec
first-byte-pos, byte-range-specھ䷨ǷǷ.յһ䷨Ƿbyte-range-specֵbyte-range-setʱ԰Ǹbyte-range-setͷ.

last-byte-posֵ, ߴڻʵĵĵǰ, Ϊ
last-byte-posͬһֽʵĵǰȵlast-byte-pos.

ͨѡlast-byte-pos, ͻܹƼֽڵ֪ʵĴС.

suffix-byte-range-specʾʵĵĺ׺, 䳤ɺ׺ֵ.(Ҳ˵, ʽ涨ʵĵNֽ.)ʵȷĺ׺, ʹʵ.

һ䷨ȷbyte-range-setٰһbyte-range-spec:
first-byte-posʵĵĵǰС, ٰһ׺ȷ
suffix-byte-range-spec, ôbyte-range-setǿ.ǲ.

byte-range-setǲ, Ӧ÷һ206״̬(ֲ)Ӧ, аʵĵĿ㷶Χ.
byte-ranges-specifier(ֽ-Χ-˵)ֵ(ٶʵĳΪ10000):

-- һ500ֽ(ֽƫ0-499, 0499):
bytes=0-499

-- ڶ500ֽ(ֽƫ500-999, 500999):
bytes=500-999

-- 500ֽ(ֽƫ9500-9999, 95009999):
      bytes=-500  bytes=9500-

-- һһֽ(ֽ09999):
bytes=0-0, -1  

-- ڵڶ500ֽ(ֽƫ500-999, 500999)ļֺϷ淶:
         bytes=500-600, 601-999
         bytes=500-700, 601-999

14.35.2 Χ
HTTPʹGET, ÷ΧͷʵһӷΧʵ, ΧͷӦΪصʵ.

     Range = "Range" ":" ranges-specifier

Ժ䷶Χͷ., HTTP/1.1ԴмٻӦڿܵʱֽ֧ڷΧ, ȻΧֲ֧ʧܴЧָ, ֶ֧ԴʵĲּ.

ַ֧ΧͷȷķΧ, ΧʵǺʵ:

-- GETԱķʽɹ, GETﷶΧͷĴ޸ķصĶ.仰˵, ӦЯ״̬206()200().

-- GETԱķʽɹΪ, GET(һʹIf-Modified-SinceIf-None-Match֮һȫ, If-Unmodified-SinceIf-Match֮һȫ)ﷶΧͷĴ޸ķصĶ.Ӱ췵ص304(δ޸)Ӧ, Ϊ.

ĳЩ, ʹRange header(Χͷ)If-Range header(跶Χͷ)ܸ.

ַ֧ΧĴյΧ, תط, Լյظʵ, ӦֻķΧظͻ.ӦýյӦ洢ڸٻ, ĸٻ䷽һµĻ.

1436 ο(Referer)
ο(Referer)ͷͻȷURIԴַ(URI)-Ϊ˷.RefererͷɹڵԴķ(back-link)б, ΪȤ, ¼, Żĸٻȵ.Ҳ׷ٹʱĻ͵(link)Աά.URIǴһûԼURIԴõ, ʹ߼̵, ôһҪReferer.

       Referer        = "Referer" ":" ( absoluteURI | relativeURI )

  :

       Referer: http://www.w3.org/hypertext/DataSources/Overview.html

ֵURI, ӦΪURI.URIһܰƬ.ȫο15.1.3.

1437 Ժ
ԺӦͷԺ503(񲻿ɴ)Ӧһʹ, ָʾڷĿͻԤжòɴ. Ҳκ3xx(¶)ӦһָʾûضǰҪȴСʱ. ֵӦʱֻеHTTP-ڻֵ(ʮ). 

Ժ=Ժԡ(HTTP-|delta-)

Ӧõж

Ժԣ, 19991231 23:59:59 ʱ
Ժԣ120

ںһ, ӳʱΪ2. 

1438 

ӦͷԭڴϢ.  ɰƷ(3. 8), ԼҪǲƷע. ƷǰǶڼӦóҪԵ˳. 
=1*(Ʒ|ע)


CERN/3. 0 libwww/2.17

Ӧͨת, 򲻵޸ķӦͷ. Ϊ, Ӧ·(Via)ͷ(14. 45ڶ).  
עʾض汾ܻʹܵЩ֪ȫ©Ĺ.  ʵ߽Ϊ. 

1439 TE
TEͷָԸӦнչԼǷԸճɿ鴫-еtrailer. ֵɹؼ֡trailers, ɶŸĺѡղչ-б. 

       TE        = "TE" ":" #( t-codings )
       t-codings = "trailers" | (-չ [- ] )
ؼ֡trailersĴڱͻԸ3. 6. 1жĳɿ鴫-еtrailer.  ˹ؼΪ-ֵ, һִ-. 
Ӧþ
       TE: deflate
       TE:
       TE: trailers,  deflate;q=0.5
TEͷ. ۺʱHTTP/1. 1ϢTE, ӱͷ(μ14. 10)оͱṩؼ. 
, TEö-Ƿɱܣ

ؼ֡trailers, ɿ鴫-ܱ.  ͻѴԼοͻָԸܳɿӦеtrailer.  ζ, ܵĻ, ͻҪôοͻԸתӦеtrailer, ҪôͼνݴӦ. 
עHTTP/1. 1δκƿ״ӦС, Ա֤ͻܹݴӦķ, 
Ĵ-TEг, Ϳɱ, ǰqvalueΪ0ֵ(3. 9ڶ,  qvalue 0ֵʾɽܡ). 
-붼ǿɽܵ, ɽܴ-qvalueֵ.  ɿ顱-qvalueֵ1. 
TEͷΪ, ûTEͷ, еĴ-ǡɿ顱.  ޴-ıǿɽܵ. 


1440 ׷(Trailer)
TrailerֵָʾtrailerϢиͷ, Ϣóɿ鴫. 

                  Trailer  = "Trailer" ":" 1#field-name

һhttp/1.1Ϣʹóɿ鴫ʱҪһtrailerͷ, 䲻Ϊ. ý֪trailerõĸͷ. 
  ûtrailerͷ, trailerܰκͷ. ڳɿ鴫õtrailerƿ3. 6. 1. 
  TrailerͷгϢͷ벻ܰͷ

   
   ݳ
   Trailer

1441 -

   -볣ͷָΪڷߺͽ֮䰲ȫĴӦʲô͵ת. ͬݴ, Ϣʵ. 

       Transfer-Encoding       = "Transfer-Encoding" ":" 1#transfer-coding

  3. 6б. һǣ

         Transfer-Encoding: chunked

   һʵӦ˶ֱ, ˳гӦõı. ڴĶϢʵͷָ. ɵhttp/1.0Ӧó򲻶ͷ. 

1442 (Upgrade)

   ͷͻָ֧ʲôĸӴЭ鲢ʹѡЭǡĻ. 101(ѡЭ)ͷָʾҪѡǸЭ. 

   Upgrade        = "Upgrade" ":" 1#product

ٸӣ

   Upgrade: HTTP/2.0,  SHTTP/1.3,  IRC/6.9,  RTA/x11
ͷ涨һּ򵥵Ļƴhttp/q.qɵͬʵЭ. ͻʹһЭ, ˵Ժĸ߰汾httpЭ, ǰѾʹhttp/1.1Э. ͨͻ˷һøͨЭָʾøõЭ(øõɷ, ǰշȻԻԴ)ͬʵЭ֮䴫. 

  ͷֻӴڵĴЭ֮ѡӦòЭ. ܱǿһЭĸı䣻Ľܺʹɷɾ. Э任ӦòͨѶܺͱѡЭ, ȻıЭԺĵһǰͷԭhttpӦ. 

  ͷֻӦֱ, http/1.1Ϣʲôʱ, ĹؼֶӦӵͷ. 

  ͷָܱʾѡͬеЭ. ΪĿ, ʹ301, 302, 303ضλӦ. 

  淶ŶhttpЭ, 3. 1ڵhttp汾жĳıЭʹ. κһǺŶɱЭ, Ȼ, ֻеͻ˺ͷͬһЭʱ. 

1443 û
  ûͷûϢ. ΪͳѧĿ, ΥЭ, ΪضûӦӦԶʶû. ûа. ָ͹ɴҪĲƷǺԪ. , ЩƷǰָӦóҪԵ˳. 

      User-Agent     = "User-Agent" ":" 1*( product | comment )

:

       User-Agent: CERN-LineMode/2.15 libwww/2.17b3

1444 (Vary)
  ͷӦʼʱȫյͷ, ܸٻǷӦظ. ڷǸٻ߾ɵӦ, ͷֵûѡı׼. 

  һΪ*ĸζŸٻ治ܸݺͷж϶Ƿǡ. ٻԸͷ÷13. 6. 

   Vary  = "Vary" ":" ( "*" | 1#field-name )

  һHTTP/1.1ķκܻӦһͷ, ǷĿĿ. ٻǡĽһǸԴͬʱ֪ͨûҪǸԴ. һڷǻӦаͷ, ǷĿĿ, ȻṩûӦʱӦı仯Ϣ. 

  һͷһͷı, Ӧһѡķѡ, ѡǡӦʱֻгͷ. һٻٶһѡгͷֵһ. 

  ˸ͷֲ˵鶨ı׼ͷĹ淶. ǶԻ治е. 

  һֵΪûжġ*ͷû(, ͻ˵ĵַ), ΪѡӦĹ. *ֵһɴֻԴ. 

1445 ·(Via)

  ·гͷ뱻غʹָʾмЭ͹ʹߺͷ֮Ľ߼Ӧԭ
ͻ˵Ľ. RFC 822[9]Ľ, Ϣȥ, ѭ, ʶ/ӦЭ. 

      Via =  "Via" ":" 1#( received-protocol received-by [ comment ] )
      received-protocol = [ protocol-name "/" ] protocol-version
      protocol-name     = token
      protocol-version  = token
      received-by       = ( host [ ":" port ] ) | pseudonym
      pseudonym         = token

  Эָ/Ӧÿһκ󱻷ͻ˽յϢİ汾. Эİ汾ӵ·ֵ, ˶еĽ˵ǰӦóЭϢ. 

  Эǿѡ, ֻҪҲֻHTTP. յһͨͽշͻ˵ĿѡĶ˿, Ȼ, ʵϢ, ܻü, ûָ˿, ɽЭĬ϶˿. 
·ֵӦ𴫵Ϣеÿһ. ÿһ߱ԼϢ, մݵӦó˳Χ. 

  ·ͷܻʹעʶյĴص, ûͷͷҲ. Ȼ, е·ͷеעǿѡ, ԱκνյĴɾ. 

  ٸ, һhttp/1.0ûһfredϢڵĴ, ʹhttp/1.1nowhere.comĹ, 󴫵ݸwwwlics.uci.eduԭ. www.ics.uci.eduյʱӦµ·ͷ

  Via: 1.0 fred,  1.1 nowhere.com (Apache/1.1)

  رΪһͨǽ, Ĭ, ܴݷǽڵֺͶ˿. Ϣֻȷ²ܴ. Ļ, κڷǽü. 

  ЩҪǿڲṹĻ, һ԰˳·ͷͬĽЭֵڵĿ. ٸӣ

       Via: 1.0 ricky,  1.1 ethel,  1.1 fred,  1.0 lucy
        ˻Ϊ
       Via: 1.0 ricky,  1.1 mertz,  1.0 lucy

  ӦóܰѶʵһǶͬһ֯Ŀ֮ͬʱѾü. ӦóܰѲͬЭֵʵһ. 

1446 (Warning)

  泣ͷûбظϢ״̬תϢ. Ϣ͵ӦһϢʵĵĻתȱ͸. 

  Ӧʱͷ¸ʽͣ
       Warning    = "Warning" ":" 1#warning-value

       warning-value = warn-code SP warn-agent SP warn-text
                                             [SP warn-date]

       warn-code  = 3DIGIT
       warn-agent = ( host [ ":" port ] ) | pseudonym
                       ; the name or pseudonym of the server adding
                       ; the Warning header,  for use in debugging
       warn-text  = quoted-string
       warn-date  = <"> HTTP-date <">

  ıʹȻ, ڽӦʹ˵ʱ. Իκοõ֪ʶ, ˵ʹߵλ, еĽ, Ӧе, ȵ. ĬϵӢ, ĬϵISO-8859-1. 

  òʹISO-8859-1, 밴RFC 2047[14]ھıָ. 

  ͷһܱӦκεϢ, ȻһЩľڸٻ, ֻӦӦϢ. µľͷӵκδڵľͷĺ. һٻһɾյϢľͷ. Ȼ, ٻɹʹٻĿЧ, ܰѷĿľͷɾЩľ. ϰյľͷӵȷӦ. ˵, ͷʵЩܸӦӦ. 

  ͷһӦ, û밴Ӧʾ˳򾡿֪ܶͨʹ. ֪ͨоӵ, û밴ЩHEURISTICS

  -ӦǰľЩںнӹȨ

  -ûѡõľʹͬľ;õľнӹȨ. 

  ͷϵͳ밴ûΪ. 
  ע⾯ĸٻΪҪ13. 1. 2й涨. 
  ͨľб, ÿһƼӢľı˼. 

  110 Ӧٻ
     ظӦٻʱӦ

  111 ʧ
        ͼʧܸٻ淵һٻӦ, ԭǷɴ. 

  112 
        ٻҪзһʱ. 

  113 ֹ̽
           ٻҪѡʵ. ڴ24Сʱ, Ӧ24Сʱ. 

  199 Ͼ
          ı԰ֻܸʹ˿Ϣ. һϵͳյľʹ߿Զ. 

  214 ת䱻Ӧ
          мٻκӦݱ(ݱͷָ)ý(ͷָ)ʵıı뱻ȥ, ѾӦ. 
  
  299 ־ûϾ
          ı԰ֻܸʹ˿Ϣ. һϵͳյľһԶ. 

  һʵhttp/1.0͵İ汾һһͷϢ, ߱Ӧƥÿһֵ;. 

  һʵյһ, оֵһ, ݺӪеֵͬ, ôֵڴ, ݻʹǰϢɾ. ɷֹ󴢴澯ͷ)Ϊԭеľƶȱɾ, ͷҲӦñɾ. 

1447 WWW-֤
401(δȨ)Ӧб뺬WWW-֤Ӧͷ.  ֵٰһָ˿Ӧ-URI֤ս(challenge).

WWW-֤=WWW-֤1#ս

HTTP֤ڡHTTP֤ժҪ֤[43]. 
ûؽWWW-ֵ֤, Ϊܺս, жWWW-֤ͷսݱɶŸ֤б. 

15ȫ

    һѳ򿪷Ա, Ϣṩ, HTTP/1.1еİȫƵûƪĵ. ȻΪٰȫȷʵṩһЩ, ͸¶ս. 

151 Ϣ

    HTTPĿͻԴĸϢе(û, , ʼַ, , ܳ׵. ), Ӧ(SHOULD)ǳСĵطֹЩϢʶͨHTTPй¶. ǷǳǿҵؽӦṩûһĽϢķַ, ߺʹⷽӦرע. ʷⷽĴ󾭳صİȫ/߻ҪⲢ³ֶʹߵĹ˾ǳĹ. 

15.1.1־Ϣ

    Ǵڴ洢ݵλ, Щǹû, ЩʶǵĶϰ߻߸Ȥ. ȻϢǻҪĲĳЩҶĴƵ. ʹHTTPЭṩݵȷĲϲûеõκιȷϵ±ɢȥ. 

15.1.2ϢĴ

    κݴЭһ, HTTPܿƱݵ, ҲûκһֵķκθĳرϢƬε. , ӦóӦ(SHOULD)ṩϢ˾ܶĶϢĿ. ĸͷֵرᵽģServer, Via, RefererFrom. 

    ¶ϸ汾Ϣܻᵼ·Ϊ֪аȫ©øܵ. ԱӦ(SHOULD)ʹServerͷһõѡ. 
    
    ΪͨһǽڵĴӦ(SHOULD)ԹȷϷǽıͷϢĴȡرķ. ر, Ӧ߻İ汾, ViaڷŻǽ. 

    RefererͷѧϰĶģʽҿԽз. Ȼǳ, ûûдRefererϢзĻͿܻᱻ. ϢѾƿ, Refererͷǿָʾһڹ˽ĵURI. 

    From͵Ϣܺûĸվİȫִ, ûʹ֮ʧЧ, Ȩ, ޸ݵĻ, ͲӦ(SHOULD NOT). û(MUST)ܹûѡӦóȱʡ. 

    ȻǱ, ǽûṩһѡֹ߽FromRefererϢķ͵ķ. 

    û(14.43)߷(14.38)ıͷʱᱻжĳضĿͻ߷һԱõرİȫ©. ҵͬϢмֵĿΪHTTPûиõĻ. 

15.1.3 URIϢı

    ΪһӵԴַǻҪϢ߿ܻᱩ¶һҪϢԴ, ǿƼûܹѡǷReferer. , һûܹһѡǹ/, ⽫ֱ/ֹRefererFromϢķ. 

    ĿҳʹðȫЭ鴫Ļ, һ(ȫ)HTTPпͻӦ(SHOULD NOT)һRefererͷ. 

    ʹHTTPЭķṩ߲Ӧ(SHOULD NOT)ʹûʹʽGET, Ϊ⽫Request-URIб. еķ, , ûURI־¼ĳԿĵط. ûʽPOST. 

15.1.4ӵAcceptͷĻҪ

    request-headerܱ¶ûԽзϢ. رAccept-languageͷܱ¶û˵, ΪԵͬĻĳԱкǿ. ṩÿ÷͵Accept-languageͷѡûᶨĹṵ̀ûйػҪй¶Ϣ. 

    û˵һƻҪй¶ķȱʡºԷAccept-languageͷ, ͨѰκɷı仯response-header, ķܹ߷, ѯûǷAccept-languageͷ. 

    ÿrequestз͵Ϊûacceptͷ, رЩֵ, ܹصؿĺͳõûʶ. ûʶṩ߽е켣Լṩƥ佻켣γɵû. עಢڴû, ûַҲΪûıʶ. ڴǿܵĻ, ûṩնûacceptͷѡӦǱص. Ϊһܵļ˴ʩ, ӦתϢʱacceptͷ. ṩ߶ȱͷһ;ûӦ(SHOULD)û漰ĻҪй©. 

152 ļ·ƵĹ

    ʵHTTPԭӦ(SHOULD)СĵHTTP󷵻صĵЩԱȨõ. HTTPֱӰHTTP URIsļϵͳ, (MUST)رעⲻҪṩûȨHTTPͻļ. UNIX, ΢Windows, ϵͳʹ".."ΪָʾǰĿ¼һ·һ. һϵͳ, ͨHTTPЩȨԴĻ, HTTPͱ(MUST)ֹRequest-URIκĽṹ. ͬ, (MUST)Ϊ漰ڲļ(ʿļ, ļ, ;籾)ҪʵĻȡ, ΪǿܰϢ. HTTPʹдҪbugѾתΪвȫķ. 

153 DNSƭ

    ͻʹHTTP, һڹⲻصIPַDNSƵİȫ. ͻҪڼٶһIP/DNSƹϷʱ. 

    ر, HTTPͻһIP/DNSƹȷӦ(SHOULD)ֵĽ, ǴڸٻǰҵĽ. ʵʱӦ(SHOULD)óʱ, ̳Ѿܹڱøٻ洢. ֻеTTL(ʱ)ϢʹٻϢܿȻõʱ, ЩٻĲѯʵ. 

    HTTPͻΪ˴ﵽܵĿİѲѯڸٻ, Ǳ(MUST)TTLϢ. 

    HTTPͻ, һǰʹķIPַıʱǾͻᱻƭ. ±űΪձʱ, ʽĹĿԽ. Ҫ˼Ǳڵİȫ. 

    ҪҲĽ˿ͻʹͬľƽΪҼûʹֲԵվ㾭ʧܵĿ. 

154 Location(λ)ͷƭ

    ķֻ֧εĶ֯, ô(MUST)ԳƵĳ֯²ӦϢLocationContent-LocationͷֵȷûͼʹûȨ޵ԴЧ. 

155 (Content-Disposition Issues)
    RFC 1806 [35], HTTPоʹõContent-Disposition(19.5.1)ͷԴڴ, ǳİȫ. Content-DispositionHTTP׼汾еһ, Դ㷺Ӧ, ֤ʹߵļֵͷ. ϸϼRFC 2183 [49](RFC 1806). 

156 ֤ͿеĿͻ

    еHTTPͻûдԵزȷرϢ. HTTP/1.1ûṩһӷֱӵĿͻķЩڸٻ֤. һشҪHTTPһչĵȱ. ڸٻ֤ܸӦóİȫģʽֻڣ

    --ͻѾ˺ܳʱ, Ȼϣͻһγʾû֤. 

    --Ӧóһжϵָ(һҳ"logout""commit"İť), ڴ֮Ӧóķ"֪"ͻûнһɱ֤. 

    ǵǰɢǵ. ĸĹ, ǹʹ뱣, ͣ, Լмаȫķ. ر, ڸٻб֤ûṩһû¶ڸٻе֤Ŀ׷ʵĻ. 

157 ͸ٻ

    HTTPм, Ұһ"м"Ŀ. ϵͳЭܵصİȫͱ. Ȩ밲ȫصϢ, ڸû֯˽Ϣ, ûṩߵȨϢ. һȫĴ, һʹûûעⰲȫͱܿǵĴ, ܱ㷺ǱڹĴ. 

    ĹԱӦеϵͳǱߴϢκϵͳһ. ر, ڴϾۼ־Ϣ߶еĸϢ, /߹֯Ϣ. ־ϢӦñСĵر, ҶԷչĺͽʹóʵָ. (15.1.1)

    ٻǱڵĹṩ˻, ΪٻݶڶһĿ. ΪһHTTPԺٻȻ, ԸٻĹܽʾǰûΪѾߵϢ. , ٻӦõϢ. 

    Ӧǵƺͱƶ, ԼṩԱѡ(ȱʡ)ǣ浽ıܺͰȫ. 

    ûǲȹ˸ֵΣHTTPԼܽ. 

    ʵʱǵʹϵͳṩ㹻ı㷺԰ȫͱܵĹ. ϵͳHTTP/1.1淶ķΧ. 

15.7.1 Դľܾ񹥻

    Ǵڵ. Ǻѷ. оڼ. . 

16 л(Acknowledgment)

    ݹ淶ʹչBNFDavidΪRFC 822 [9]Ľṹ. ͬ, ʹ˺ܶNathaniel BorenesteinNed FreedΪMIME [7]ṩĶ. ϣݹ淶ǰڼٹȥHTTPͻʼϢʽϵϵĻ. 

    HTTPЭ⼸Ѿ൱ķչ. ĿԱ--Ѿͨʼбά̸ֵ--ͨHTTPάĳɹд.  Marc Andreessen,  Robert  Cailliau,  Daniel W. Connolly,  Bob Denny,  John Franks,  Jean-Francois Groff ,  Phillip M. Hallam-Baker,  Hakon W. Lie,  Ari Luotonen,  Rob McCool,  Lou Montulli,  Dave Raggett,  Tony Sanders,   Marc VanHeyningenΪڶЭڷĹӦõõر. 

    ƪĵЩֵHTTP-WGԱעл˺ܴ洦. ѾᵽЩ, ʿ淶˹ף
       Gary Adams                  Ross Patterson
       Harald Tveit Alvestrand     Albert Lunde
       Keith Ball                  John C. Mallery
       Brian Behlendorf            Jean-Philippe Martin-Flatin
       Paul Burchard               Mitra
       Maurizio Codogno            David Morris
       Mike Cowlishaw              Gavin Nicol
       Roman Czyborra              Bill Perry
       Michael A. Dolan            Jeffrey Perry
       David J. Fiander            Scott Powers
       Alan Freier                 Owen Rees
       Marc Hedlund                Luigi Rizzo
       Greg Herlihy                David Robinson
       Koen Holtman                Marc Salomon
       Alex Hopmann                Rich Salz
       Bob Jernigan                Allan M. Schiffman
       Shel Kaphan                 Jim Seidman
       Rohit Khare                 Chuck Shotton
       John Klensin                Eric W. Sink
       Martijn Koster              Simon E. Spero
       Alexei Kosut                Richard N. Taylor
       David M. Kristol            Robert S. Thau
       Daniel LaLiberte            Bill (BearHeart) Weinman
       Ben Laurie                  Francois Yergeau
       Paul J. Leach               Mary Ellen Zurko
       Daniel DuBois               Josh Cohen

    ٻƵݺͽӦһʿĽעͣShel Kaphan, 
Paul Leach,  Koen Holtman,  David Morris,   Larry Masinter. 

    󲿷ֹ淶ķΧǻAri LuotonenJohn FranksĹ, ԼSteve Zilles. 

    лPalo Alto"cave men". ֪˭. 

    Jim Gettys(ƪĵڵı)رϣлRoy Fielding, ƪĵǰı, ͬJohn Klensin,  Jeff Mogul,  Paul Leach,  Dave Kristol,  Koen Holtman,  John Franks,  Josh Cohen,  Alex Hopmann,  Scott Lawrence,  Larry Masinterһлǵİ. ҪرлJeff MogulScott Lawrence"MUST/MAY/  SHOULD"ʹõļ. 

    Apache, Anselm Baird-Smith, Jigsaw, Henrik FrystykʵRFC 2068, ϣлǷƪĵԾ. 

17 ο (Reference)

   [1] Alvestrand,  H.,  "Tags for the Identification of Languages",  RFC
       1766,  March 1995.

   [2] Anklesaria,  F.,  McCahill,  M.,  Lindner,  P.,  Johnson,  D.,  Torrey, 
       D. and B. Alberti,  "The Internet Gopher Protocol (a distributed
       document search and retrieval protocol)",  RFC 1436,  March 1993.

   [3] Berners-Lee,  T.,  "Universal Resource Identifiers in WWW",  RFC
       1630,  June 1994.

   [4] Berners-Lee,  T.,  Masinter,  L. and M. McCahill,  "Uniform Resource
       Locators (URL)",  RFC 1738,  December 1994.

   [5] Berners-Lee,  T. and D. Connolly,  "Hypertext Markup Language -
       2.0",  RFC 1866,  November 1995.

   [6] Berners-Lee,  T.,  Fielding,  R. and H. Frystyk,  "Hypertext Transfer
       Protocol -- HTTP/1.0",  RFC 1945,  May 1996.

   [7] Freed,  N. and N. Borenstein,  "Multipurpose Internet Mail
       Extensions (MIME) Part One: Format of Internet Message Bodies", 
       RFC 2045,  November 1996.

   [8] Braden,  R.,  "Requirements for Internet Hosts -- Communication
       Layers",  STD 3,  RFC 1123,  October 1989.

   [9] Crocker,  D.,  "Standard for The Format of ARPA Internet Text
       Messages",  STD 11,  RFC 822,  August 1982.

   [10] Davis,  F.,  Kahle,  B.,  Morris,  H.,  Salem,  J.,  Shen,  T.,  Wang,  R., 
        Sui,  J.,  and M. Grinbaum,  "WAIS Interface Protocol Prototype
        Functional Specification, " (v1.5),  Thinking Machines
        Corporation,  April 1990.

   [11] Fielding,  R.,  "Relative Uniform Resource Locators",  RFC 1808, 
        June 1995.

   [12] Horton,  M. and R. Adams,  "Standard for Interchange of USENET
        Messages",  RFC 1036,  December 1987.

   [13] Kantor,  B. and P. Lapsley,  "Network News Transfer Protocol",  RFC
        977,  February 1986.

   [14] Moore,  K.,  "MIME (Multipurpose Internet Mail Extensions) Part
        Three: Message Header Extensions for Non-ASCII Text",  RFC 2047, 
        November 1996.

   [15] Nebel,  E. and L. Masinter,  "Form-based File Upload in HTML",  RFC
        1867,  November 1995.

   [16] Postel,  J.,  "Simple Mail Transfer Protocol",  STD 10,  RFC 821, 
        August 1982.

   [17] Postel,  J.,  "Media Type Registration Procedure",  RFC 1590, 
        November 1996.

   [18] Postel,  J. and J. Reynolds,  "File Transfer Protocol",  STD 9,  RFC
        959,  October 1985.

   [19] Reynolds,  J. and J. Postel,  "Assigned Numbers",  STD 2,  RFC 1700, 
        October 1994.

   [20] Sollins,  K. and L. Masinter,  "Functional Requirements for
        Uniform Resource Names",  RFC 1737,  December 1994.

   [21] US-ASCII. Coded Character Set - 7-Bit American Standard Code for
        Information Interchange. Standard ANSI X3.4-1986,  ANSI,  1986.

   [22] ISO-8859. International Standard -- Information Processing --
        8-bit Single-Byte Coded Graphic Character Sets --
        Part 1: Latin alphabet No. 1,  ISO-8859-1:1987.
        Part 2: Latin alphabet No. 2,  ISO-8859-2,  1987.
        Part 3: Latin alphabet No. 3,  ISO-8859-3,  1988.
        Part 4: Latin alphabet No. 4,  ISO-8859-4,  1988.
        Part 5: Latin/Cyrillic alphabet,  ISO-8859-5,  1988.
        Part 6: Latin/Arabic alphabet,  ISO-8859-6,  1987.
        Part 7: Latin/Greek alphabet,  ISO-8859-7,  1987.
        Part 8: Latin/Hebrew alphabet,  ISO-8859-8,  1988.
        Part 9: Latin alphabet No. 5,  ISO-8859-9,  1990.

   [23] Meyers,  J. and M. Rose,  "The Content-MD5 Header Field",  RFC
        1864,  October 1995.

   [24] Carpenter,  B. and Y. Rekhter,  "Renumbering Needs Work",  RFC
        1900,  February 1996.

   [25] Deutsch,  P.,  "GZIP file format specification version 4.3",  RFC
        1952,  May 1996.

   [26] Venkata N. Padmanabhan,  and Jeffrey C. Mogul. "Improving HTTP
        Latency",  Computer Networks and ISDN Systems,  v. 28,  pp. 25-35, 
        Dec. 1995. Slightly revised version of paper in Proc. 2nd
        International WWW Conference '94: Mosaic and the Web,  Oct. 1994, 
        which is available at
        http://www.ncsa.uiuc.edu/SDG/IT94/Proceedings/DDay/mogul/HTTPLat
        ency.html.

   [27] Joe Touch,  John Heidemann,  and Katia Obraczka. "Analysis of HTTP
        Performance",  http://www.isi.edu/touch/pubs/http-perf96/>, 
        ISI Research Report ISI/RR-98-463,  (original report dated Aug.
        1996),  USC/Information Sciences Institute,  August 1998.

   [28] Mills,  D.,  "Network Time Protocol (Version 3) Specification, 
        Implementation and Analysis",  RFC 1305,  March 1992.

   [29] Deutsch,  P.,  "DEFLATE Compressed Data Format Specification
        version 1.3",  RFC 1951,  May 1996.

   [30] S. Spero,  "Analysis of HTTP Performance Problems, "
        http://sunsite.unc.edu/mdma-release/http-prob.html.

   [31] Deutsch,  P. and J. Gailly,  "ZLIB Compressed Data Format
        Specification version 3.3",  RFC 1950,  May 1996.

   [32] Franks,  J.,  Hallam-Baker,  P.,  Hostetler,  J.,  Leach,  P., 
        Luotonen,  A.,  Sink,  E. and L. Stewart,  "An Extension to HTTP:
        Digest Access Authentication",  RFC 2069,  January 1997.

   [33] Fielding,  R.,  Gettys,  J.,  Mogul,  J.,  Frystyk,  H. and T.
        Berners-Lee,  "Hypertext Transfer Protocol -- HTTP/1.1",  RFC
        2068,  January 1997.

   [34] Bradner,  S.,  "Key words for use in RFCs to Indicate Requirement
        Levels",  BCP 14,  RFC 2119,  March 1997.

   [35] Troost,  R. and Dorner,  S.,  "Communicating Presentation
        Information in Internet Messages: The Content-Disposition
        Header",  RFC 1806,  June 1995.

   [36] Mogul,  J.,  Fielding,  R.,  Gettys,  J. and H. Frystyk,  "Use and
        Interpretation of HTTP Version Numbers",  RFC 2145,  May 1997.
        [jg639]

   [37] Palme,  J.,  "Common Internet Message Headers",  RFC 2076,  February
        1997. [jg640]

   [38] Yergeau,  F.,  "UTF-8,  a transformation format of Unicode and
        ISO-10646",  RFC 2279,  January 1998. [jg641]

   [39] Nielsen,  H.F.,  Gettys,  J.,  Baird-Smith,  A.,  Prud'hommeaux,  E., 
        Lie,  H.,  and C. Lilley. "Network Performance Effects of
        HTTP/1.1,  CSS1,  and PNG, " Proceedings of ACM SIGCOMM '97,  Cannes
        France,  September 1997.[jg642]

   [40] Freed,  N. and N. Borenstein,  "Multipurpose Internet Mail
        Extensions (MIME) Part Two: Media Types",  RFC 2046,  November
        1996. [jg643]

   [41] Alvestrand,  H.,  "IETF Policy on Character Sets and Languages", 
        BCP 18,  RFC 2277,  January 1998. [jg644]

   [42] Berners-Lee,  T.,  Fielding,  R. and L. Masinter,  "Uniform Resource
        Identifiers (URI): Generic Syntax and Semantics",  RFC 2396, 
        August 1998. [jg645]

   [43] Franks,  J.,  Hallam-Baker,  P.,  Hostetler,  J.,  Lawrence,  S., 
        Leach,  P.,  Luotonen,  A.,  Sink,  E. and L. Stewart,  "HTTP
        Authentication: Basic and Digest Access Authentication",  RFC
        2617,  June 1999. [jg646]

   [44] Luotonen,  A.,  "Tunneling TCP based protocols through Web proxy
        servers, " Work in Progress. [jg647]

   [45] Palme,  J. and A. Hopmann,  "MIME E-mail Encapsulation of
        Aggregate Documents,  such as HTML (MHTML)",  RFC 2110,  March
        1997.

   [46] Bradner,  S.,  "The Internet Standards Process -- Revision 3",  BCP
        9,  RFC 2026,  October 1996.

   [47] Masinter,  L.,  "Hyper Text Coffee Pot Control Protocol
        (HTCPCP/1.0)",  RFC 2324,  1 April 1998.

   [48] Freed,  N. and N. Borenstein,  "Multipurpose Internet Mail
        Extensions (MIME) Part Five: Conformance Criteria and Examples", 
        RFC 2049,  November 1996.

   [49] Troost,  R.,  Dorner,  S. and K. Moore,  "Communicating Presentation
        Information in Internet Messages: The Content-Disposition Header
        Field",  RFC 2183,  August 1997.
Copyright  www.cnpaf.net (2007).          All Rights Reserved.


18 ߵַ

   Roy T. Fielding
   Information and Computer Science
   University of California,  Irvine
   Irvine,  CA 92697-3425,  USA

   Fax: +1 (949) 824-1715
   EMail: fielding@ics.uci.edu


   James Gettys
   World Wide Web Consortium
   MIT Laboratory for Computer Science
   545 Technology Square
   Cambridge,  MA 02139,  USA

   Fax: +1 (617) 258 8682
   EMail: jg@w3.org


   Jeffrey C. Mogul
   Western Research Laboratory
   Compaq Computer Corporation
   250 University Avenue
   Palo Alto,  California,  94305,  USA

   EMail: mogul@wrl.dec.com


   Henrik Frystyk Nielsen
   World Wide Web Consortium
   MIT Laboratory for Computer Science
   545 Technology Square
   Cambridge,  MA 02139,  USA

   Fax: +1 (617) 258 8682
   EMail: frystyk@w3.org


   Larry Masinter
   Xerox Corporation
   3333 Coyote Hill Road
   Palo Alto,  CA 94034,  USA

   EMail: masinter@parc.xerox.com


   Paul J. Leach
   Microsoft Corporation
   1 Microsoft Way
   Redmond,  WA 98052,  USA

   EMail: paulle@microsoft.com


   Tim Berners-Lee
   Director,  World Wide Web Consortium
   MIT Laboratory for Computer Science
   545 Technology Square
   Cambridge,  MA 02139,  USA

   Fax: +1 (617) 258 8682
   EMail: timbl@w3.org

19 ¼

191 ýmessage/httpapplication/http

     ƪĵ˶HTTP/1.1Э, ý"message/http""application/http"Ĺ淶. message/httpMIME"message"͹·Ⱥͱ, ͿװHTTPӦϢ. application/httpͿװһ߸HTTPӦϢ(ǻϵ)Ĵ·. IANA[17]ע. 
        
        ýƣ    message
        ýƣ  http
                
        ѡ        汾, Ϣ
        汾װϢHTTP汾(, "1.1"). , 汾Դӱĵ        һȷ. 
        ϢͣϢ--"request""response". , ͿԴӱĵĵһȷ.      
        뿼ǣֻ"7bit", "8bit", "". 
        ȫǣ

        
        ýƣ    application
        ýƣ  http
                
        ѡ        汾, Ϣ
        汾װϢHTTP汾(, "1.1"). , 汾Դӱĵĵһȷ. 
        ϢͣϢ--"request""response". , ͿԴӱĵĵһȷ.      
        뿼ǣͷװHTTPϢ""ĸʽͨE-mailݵʱһֺʵݴǱ. 
        ȫǣ         

192 ýmultipart/byteranges
     һHTTP206()ӦϢܴΧ(ڴΧصӦ), ЩΪһmultipartϢĴ. ;ýͱ"multipart/byteranges". 

    multipart/byterangesýͰ߸Ĳ, ÿһԼͺݷΧ. ķָֽֿÿĲֵķַֽ. 

        ýƣ    multipart
        ýƣ  byteranges
                boundary
        ѡ        
        뿼ǣֻ"7bit", "8bit", "". 
        ȫǣ         

    磺
    HTTP/1.1 206
   Date: Wed,  15 Nov 1995 06:25:24 GMT
   Last-Modified: Wed,  15 Nov 1995 04:58:08 GMT
   Content-type:multipart/byteranges;boundary=THIS_STRING_SEPARATES

   --THIS_STRING_SEPARATES
   Content-type: application/pdf
   Content-range: bytes 500-999/8000

   ...һ...
   --THIS_STRING_SEPARATES
   Content-type: application/pdf
   Content-range: bytes 7000-7999/8000

   ...ڶ
   --THIS_STRING_SEPARATES--

   ע⣺
   1)ӵCRLFsڱпڵһַֽ. 
   2)ȻRFC 2046 [40]ַֽӦ, һЩеĳõķַֽдĴ. 
   3)ͷǰʹmultipart/x-byterangesý͵byteranges淶ڲݰ, ݰǵȫHTTP/1.1İ汾. 

193 ݵӦó (Tolerent Applications)

     ȻƪĵгHTTP/1.1һϢԪ, ǲеĳʵֵʱȷ. ǽ鵱ƫȷ͵ʱƫӦǿݵ. 

    ͻڷ״̬еʱӦ(SHOULD)ǿݵĲҷڷеʱҲ(Ӧ)ǿݵ. ر, ֻ֮ҪһSPʱ, ҲӦ(SHOULD)SPHTַ. 

    ϢͷĽ˳CRLF. Ȼǽڽıͷʱ, ӦýܵLFΪһеĽԵһλCR. 

    һʵĵӦ(SHOULD)ֳɻಢǸе, ޷ʵȼUS-ASCIIISO-8859-1ʵ. 3.7.13.4.1. 

    ԹʱķͱԼʱǱҪĸӹ
    --HTTP/1.1ͻ͸ٻӦ(SHOULD)ٶһƺ50ԺRFC-850ʵǹȥ(ڽ"2000"). 

    һHTTP/1.1ʵֿ(MAY)ڲΪʱȷڸ, һҪ(MUST NOT)ڲΪʱȷڸ. 

    --ʱйصļ(MUST)øʱ. һ(MUST NOT)ӰʱļͱȽ. 

    --һHTTPͷȷЯһʱʱ, (MUST)пصķתɸʱ. 

194 HTTPʵRFC 2045ʵ֮

    HTTP/1.1ʹΪʼ(RFC 822 [9])Ͷ;ʼ(MIME [7])һŵıֶĻչĻƴʵĽṹ. , RFC 2045ʼ, HTTPһЩܲRFC 2045Ĳͬ. ЩͬСĵѡŻӵ, ʹýи, ʱȽϸ, ҳһЩHTTPͿͻĹ. 

    ¼HTTPRFC 2045ͬ. ϸMIMEеĴӦ(SHOULD)ʶЩͬڱҪĵطṩת. MIMEHTTPĴҲҪʶЩͬΪһЩתҪ. 

19.4.1 MIME汾

    HTTPһMIMEЭ. ȻHTTP/1.1Ϣ(MAY)MIME汾ͨͷָϢʹõMIMEЭİ汾. 

    MIME汾ıͷʹñϢȫMIMEЭ(RFC 2045[7]). HTTPϢϸMIMEʱ/ȷ(ڿܵĵط)ȫƥ. 

       MIME-Version   = "MIME-Version" ":" 1*DIGIT "." 1*DIGIT

    HTTP/1.1õȱʡֵMIME1.0汾. Ȼ, HTTP/1.1ϢķƪĵMIME淶. 

19.4.2 ת淶ʽ

    RFC 2045 [7]Ҫͨʵڴǰתɹ淶ʽ, RFC 2049 [48]4. ƪĵ3.7.1˵HTTPʱʹõ"ı"ýĴЭʽ. RFC 2046Ҫ"ı"͵ݾCRLFһмֹмʹCRLF. HTTPCRLF, CR, ͵LFָһϢHTTPʱıм. 

ڿܵĵط, HTTPϸMIMEĴӦ(SHOULD)ѱĵ3.7.1ıýмRFC 2049 CRLFĹ淶ʽ. Ȼע⵱ݵıԼHTTPʹһЩðλ1310ʾCRLFõʵ, һЩλõ, Ǹӵ. 

    ʹӦעתƻκԭݵУ, ԭѾǹ淶ʽ. , κHTTPʹУ͵ݽʾΪ淶ʽ. 

19.4.3 ڸʽת

    Ϊ˼ڱȽϵĹHTTP/1.1ʹһ޶ڸʽ. ЭĴӦ(SHOULD)ȷϢڵκڱͷһHTTP/1.1ĸʽ, ҪĻд. 

19.4.4 ݱĽ

    RFC 2045κ൱HTTP/1.1ݱ뱨ͷĸ. ȻHTTPMIMEЭĴΪý͵, ͱ(MUST)ıͱͷֵǰϢǰʵ. (һЩͨ͵ѾʹýͲ";conversions="ʵֵЧýĹ. , RFC 2045һ. )

19.4.5 ݴ

    HTTPʹRFC 2045ݴ(CTE). ʹMIMEЭ鵽HTTPĴر(MUST)ڰӦϢHTTPͻ֮ǰɾκηʵCTE("quoted-printable""base64"). 

    HTTPʹMIMEЭĴȷϢǸЭ˵ȷĸʽͱڰȫĴ, "ȫ"ĶʹõЭƸ. ཫĿЭ鰲ȫĿ, ؾӦ(SHOULD)úʵݴݽз. 

19.4.6 Ľ

    HTTP/1.1˴뱨ͷ(14.41). /ر(MUST)()ʹMIMEЭ()ǰϢǰɾκδ. 

    һ"chunked"(3.6)ĳüٴʾ£
       length := 0
       read chunk-size,  chunk-extension (if any) and CRLF
       while (chunk-size > 0) {
          read chunk-data and CRLF
          append chunk-data to entity-body
          length := length + chunk-size
          read chunk-size and CRLF
       }
       read entity-header
       while (entity-header not empty) {
          append entity-header to existing header fields
          read entity-header
       }
       Content-Length := length
       Remove "chunked" from Transfer-Encoding

19.4.7 MHTMLг

    MHTMLHTTPҪ˽MIMEг. ȻHTTPû, HTTPѹ. HTTPMHTMLϢMHTMLĹ涨, гȵƺѹ, 淶, ȻHTTPΪЧغɵϢʵ(3.7.2)Ҳ˵ݻκοܰǵMIMEͷ. 

19.5 ص

    RFC 1945RFC 2068¼һЩеĶHTTPʵõЭԭ, ǶڴȲҲȷ. еһЩ˼ƻʵ, һЩ˱ȱٽHTTP/1.1淶ϵĵַʵ鲿. 

    SMTPMIMEıͷ, ݴͱ, Ҳʵ(RFC 2076 [37]). 

19.5.1 ݴ

    ݴӦͷѾƻΪһûݴһļԭṩһȱļķ. ÷RFC 1806 [35]Ķ. 

        content-disposition = "Content-Disposition" ":"
                              disposition-type *( ";" disposition-parm )
        disposition-type = "attachment" | disp-extension-token
        disposition-parm = filename-parm | disp-extension-parm
        filename-parm = "filename" "=" quoted-string
        disp-extension-token = token
        disp-extension-parm = token "=" ( token | quoted-string )

    һǣ

      Content-Disposition: attachment; filename="fname.ext"

    ûĴӦ(SHOULD NOT)עκļĲгֵļ·Ϣ, ΪһһӦHTTPĲ. ļӦ(SHOULD)ֻն˵һ. 

    Ӧõıͷг/λֽ, ⰵʾûӦʵӦ(Ϣ), ֱӿʼӦ...'dialog. 

    15.5ݴİȫ. 

19.6 ǰ汾ļ

    Ҫǰİ汾ļݳЭ淶ķΧ. ȻHTTP/1.1Ƴɺ֧ǰİ汾. дݹ淶ʱ, ֵļ¼ϣҵHTTP/1.1ǣ

      --HTTP/0.9, 1.01.1иʽ
      --HTTP/0.9, 1.01.1ʽеκЧ
      --ǡÿͻʹõҪ汾ظϢ. 

    ϣHTTP/1.1Ŀͻ

      --HTTP/1.01.1Ӧ״̬иʽ
      --HTTP/0.9, 1.01.1ĸʽκЧӦ. 
    
    ԴHTTP/1.0ʵ, ÿһӵĽͨͻȷڷӦر. һЩʵRFC 2068 [33]19.7.1Keep-Aliveιӵİ汾. 

19.6.1 HTTP/1.0ĸı

    һܽHTTP/1.0HTTP/1.1֮Ҫ. 

19.6.1.1 Լ򵥵ĶwebͱIPַĸı

    ͻͷ֧ͷ, HTTP/1.1ͷ(14.23)ھͱ, ҽܾԵURIs(5.1.2)Ǳ淶Ҫĸı. 
    
    ϵHTTP/1.0ͻٶIPַͷһһĹϵ. ûȷĻԷֱӶIPַ. һϵHTTPͻձĸĸı佫֧һIPַWEBվ, ˶WEBĿ, һIPַѾص. Ҳܴ»ѾڶHTTP URLsֻΪĳ;IPַ. WEBӵٶ, Ѿõķ, жHTTPʵ(HTTP/1.0ĳ)ȷʵЩҪǷǳҪģ

    --ͻͷ(MUST)֧ͷ. 
    --HTTP/1.1Ŀͻ(MUST)ͷ. 
    --HTTP/1.1󲻰ͷͱ(MUST)400(Bad Request). 
    --(MUST)ȫURIs. 

19.6.2 HTTP/1.0ӵļ

    һЩͻͷϣһЩǰʵHTTP/1.0ӵĿͻͷ. ӲȱʡΪʱ, ͱȷԽ. HTTP/1.0ӵʵʵȱݵ, HTTP/1.1µļ򵥵Щ. һЩе1.0ͻܷKeep-AliveһӵĴ, ôʹؽһշ, һKeep-AliveӲһŵHTTP/1.0ȴرյӦ. HTTP/1.0ͻֹʹKeep-Aliveʹ̸. 

    Ȼ, ʹ̸ǳҪô, Խֹ޷ܵ. , ҪһЩĻ, һConnectionϴ̸ʹҲǰȫ. HTTP/1. 0Ϣȱʡ;һµĹؼ(Connection: close)ǳ. 14.10.   
    ԭʼĳHTTP/1.0ʽ(the Connection: Keep-Alive and Keep-Alive header)¼RFC 2068 [33]. 

19.6.3 RFC 2068ĸı
    ƪ淶Ѿϸؼֵ÷ǵ壻RFC 2068RFC 2119 [34] ƶЭкܶ. 

    ĸ뽫ʹվʧ(DNSʧ). (10.5.5)

    CREATEһص㵱һϵһδʱ뷢һEtag. (10.2.2)

    ӹ淶ɾݻ޷㷺ʵ, ҳ˾չûм, ȫķ. ƵһķʽMHTML [45] ʹ. 

    ϢԵʹchunked(Լı)Ҫȷƥķʽ໥Ӱ죻ȷŪμϢҪ. (3.6, 4.4, 7.2.2, 13.5.2, 14.13, 14.16)


    ""ٻзֵ. (3.5)

    ֵӦñ"ʲôҪ"ͻܾ. (3.9)

    RFC 2145ѾHTTP汾ŵʹúͽ. ҪΪ˴ʵHTTP/1.0зֵҪֵ֧Э汾. (3.1)

    ͳַõΪ˱ڽܱͷƵļ. (14.2)

    HTTP/1.1ĸٻģʽеһ©ˣs-maxageΪ˲. (13.4, 14.8, 14.9, 14.9.3)

    ٻƣΪӦʱָǲǡ. (14.9.3)

    з(Ǵ)֪ӦȫȵԿӦ. ҪһݷΧָʾϢȫȵı. 

    ǻظеmeta-dataΧӦ𽫱÷ǳ߳ͨ206ӦֻͱҪıͷ, ܹ. (10.2.7, 13.5.3, 14.27)

    Χ⣻﷨, ԼΧĵв. Ҫ״̬416ȷģ, ָһĵʵݵıΧ.  (10.4.17,  14.16)

    ϢдҪʹ״ȸ, ΪĽԻشӰ, ҪӦ⣺

    1."HTTP/1.1Ժİ汾""HTTP/1.1", ⲻʵ˶δHTTP/1.x汾ʵΪҪ. 

    2.һûǿͻӦطһҪ. 

    3.ѶԿͻԲϣ100(Ժ)Ӧ, ԼԴתӦ100ҪΪӦ1xxһҪ. 

    4.޸һЩTCP, ʹHTTP÷TCPһ. 

    5.ҪԭڷͱӦ100(չ)֮ǰһҪ(MUST NOT)ȴ. 

    6.ѾһЩ, , Ǳ, 100(չ). 

    7.ܾ񹥻ͱƵĿͻ. 

    仯ڴıͷ״̬417. ϢҪ޸8.2, ,  10.4.18, 8.1.2.2,  13.11,  14.20. 

    Ӧÿʵʱݵĳ. (13.5.2)

    Ӧ403404֮Ļ. (10.4.4,  10.4.5,  10.4.11)

    ܱ, ûеõʵľ. (13.1.2,  13.2.4,  13.5.2,  13.5.3,  14.9.3,  14.46)ҲҪһͨıͷ, ΪPUTҪ. 
    
    Ҫ, رchunkedĽ. İ취ǰѴúһ. 漰һIANAע(з), һµıͷ(TE)δȨٱͷ. кҪĺô, ޸ֵõ. TEҲ, ̫Ե, Ϊ֤, chunkedHTTP/1.0ͻ֮໥öֵ¼ݵ. (3.6,  3.6.1,  14.39)

    , , ӵķݹ淶ǰİ汾жһʵ. RFC 2068 [33]. 

    仯, ݰ汾, Դ, , URI, ݻͷݹ淶ǰİ汾ж, һʵ. RFC 2068 [33]. 

20  (Index)

    μRFCĺǲ. 

21 ȫȨ

    Ȩ(C)INTERNET SOCIETY(1999). Ȩ(All rights reserved). 

    еĸƺİȨһ, ôƪĵķͿԿṩ, Ϳ׼, , ͷ, ȫ߲, עͻĽͻʵеİ, ûκε. Ȼ, ƪĵܱ޸, ɾȨINTERNET SOCIETY֯ĲοĿ, Ϊ˷չ׼Ŀ, »׼̶İȨõ, ҪӢ֮. 

    ׼õĲҲᱻINTERNET SOCIETYĺ֧֯. 

    ƪĵ"AS IS"ĻϲINTERNET SOCIETYINTERNET ENGINEERING TASK FORCEе, ȷĻָ߰, κʹϢƻκεȨɻκҵʵĿĵ. 

л(Acknowledgment)
    
    RFC༭ʽInternet Societyṩ. 
Copyright  www.cnpaf.net (2007).          All Rights Reserved.

   
