HTTP/1.1协议规范(中文归纳版)
一、介绍(introduction)
1. 目的——HTTP/0.9-〉HTTP/1.0-〉HTTP/1.1
2. 要求——MUST、REQUIRED、SHOULD
3. 术语——连接(Connection)、消息(Message)、请求(Request)、应答(Response)、资源(Resource)、实体 (Entity)、表示方法(Representation)、内容协商(Content Negotiation)、变量(Variant)、客户机(Client)、用户代理(User agent)、服务器(Server)、原服务器(Origin server)、代理服务器( Proxy)、网关(gateway)、高速缓存(Cache)、可缓存(Cacheable)、直接(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)
4. 总体操作——请求/应答、中介
二、符号惯例与一般语法(notational conversions and generic grammar)
1. 扩充BNF——name = definition,"literal",rule1 | rule2,(rule1 rule2),*rule,[rule],N rule, #rule,; comment, implied *LWS
2. 基本规则——OCTET,CHAR,UPALPHA,LOALPHA,ALPHA,DIGIT,CTL,CR,LF,SP,HT,<">
三、协议参数(protocol parameters)
1. HTTP版本——HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
2. 统一资源标示符(URI)——统一资源定位器(URL)和统一资源名称(URN)的结合,http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
3. 日期/时间格式——Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123,transparent中文翻译
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
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
4. 字符集——本文档中的术语"字符集"指一种用一个或更多表格将一个八字节序列转换成一个字符序列的方法,
charset=token
失踪字符集
charset=token
失踪字符集
5. 内容编码——内容编码主要用来允许文档压缩(信源编码)
content-coding= token
注册表包含下列标记:gzip,compress,deflate,identity
content-coding= token
注册表包含下列标记:gzip,compress,deflate,identity
6. 传输编码——目的是能够确保通过网络安全传输(信道编码)
transfer-coding = "chunked" | transfer-extension
transfer-extension = token *( ";" parameter ),
成块传输代码
transfer-coding = "chunked" | transfer-extension
transfer-extension = token *( ";" parameter ),
成块传输代码
7. 媒体类型——media-type = type "/" subtype *( ";" parameter )
type = token
subtype = token
type = token
subtype = token
规范化和原文缺省
多部分类型
多部分类型
8. 产品标记——product = token ["/" product-version]
product-version = token
product-version = token
9. 质量值——qvalue = ( "0" [ "." 0*3DIGIT ] )| ( "1" [ "." 0*3("0") ] )
10. 语言标记——language-tag = primary-tag *( "-" subtag )
primary-tag = 1*8ALPHA
subtag = 1*8ALPHA
primary-tag = 1*8ALPHA
subtag = 1*8ALPHA
11. 实体标记——entity-tag = [ weak ] opaque-tag
weak = "W/"
opaque-tag = quoted-string
weak = "W/"
opaque-tag = quoted-string
12. 范围单位——range-unit = bytes-unit | other-range-unit
bytes-unit = "bytes"
bytes-unit = "bytes"
other-range-unit = token
四、 HTTP消息(HTTP message)
1. 消息类型——HTTP-message = Request | Response ; HTTP/1.1 messages
generic-message = start-line *(message-header CRLF) CRLF [ message-body ]
start-line = Request-Line | Status-Line
generic-message = start-line *(message-header CRLF) CRLF [ message-body ]
start-line = Request-Line | Status-Line
2. 消息头——HTTP头域包括常规头,请求头,应答头和实体头域
message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )
field-content = <the OCTETs making up the field-value and consisting of either *TEXT or combinations of token, separators, and quoted-string>
message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )
field-content = <the OCTETs making up the field-value and consisting of either *TEXT or combinations of token, separators, and quoted-string>
3. 消息体——message-body = entity-body| <entity-body encoded as per Transfer-Encoding>
4. 消息的长度——决定因素
5. 常规头域——general-header = Cache-Control| Connection| Date| Pragma| Transfer-Encoding
五、 请求(request)
首行包括利用资源的方式,区分资源的标识,以及协议的版本号
Request = Request-Line * (( general-header| request-header| entity-header ) CRLF) CRLF [ message-body ]
Request = Request-Line * (( general-header| request-header| entity-header ) CRLF) CRLF [ message-body ]
1. 请求行——Request-Line = Method SP Request-URI SP HTTP-Version CRLF
方法——方法标记指的是在请求URI所指定的资源上所实现的方式
Method = "OPTIONS"| "GET"| "POST"| "PUT"| "DELETE"| "TRACE"| "CONNECT"| extension-method
extension-method = token
请求URL——请求URL是一种全球统一的应用于资源请求的资源标识符
方法——方法标记指的是在请求URI所指定的资源上所实现的方式
Method = "OPTIONS"| "GET"| "POST"| "PUT"| "DELETE"| "TRACE"| "CONNECT"| extension-method
extension-method = token
请求URL——请求URL是一种全球统一的应用于资源请求的资源标识符
Request-URI = "*" | absoluteURI | abs_path | authority
请求行举例:GET /pub/WWW/TheProject.html HTTP/1.1
GET /pub/WWW/TheProject.html HTTP/1.1
Host:
请求行举例:GET /pub/WWW/TheProject.html HTTP/1.1
GET /pub/WWW/TheProject.html HTTP/1.1
Host:
2. 请求定义的资源——一个INTERNET请求所定义的精确资源由请求URL和主机报头域所决定
3. 请求报头域——request-header = Accept| Accept-Charset| Accept-Encoding| Accept-Language| Authorization| Expect| From| Host| If-Match| If-Modified-Since| If-None-Match| If-Range| If-Unmodified-Since| Max-Forwards| Proxy-Authorization| Range| Referer| TE| User-Agent
六、 应答(response)
接收和翻译一个请求信息后,服务器发出一个HTTP应答信息
Response = Status-Line*(( general-header| response-header| entity-header ) CRLF) CRLF [ message-body ]
Response = Status-Line*(( general-header| response-header| entity-header ) CRLF) CRLF [ message-body ]
1. 状态行——Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
状态码——状态码是试图理解和满足请求的三位数字的整数码,1xx,2xx,3xx,4xx,5xx,100-〉505-〉扩展码
状态码——状态码是试图理解和满足请求的三位数字的整数码,1xx,2xx,3xx,4xx,5xx,100-〉505-〉扩展码
2. 应答报头域——response-header = Accept-Ranges| Age| Location| Proxy-Authenticate| Retry-After| Server| Vary| WWW-Authenticate
七、 实体(entity)
在未经特别规定的情况下,请求与应答的消息也可以传送实体。 实体包括实体报头域与实体正文,而有些应答只包括实体报头。
1. 实体报头域——entity-header = Allow | Content-Encoding| Content-Language| Content-Length | Content-Location| Content-MD5| Content-Range| Content-Type| Expires| Last-Modified| extension-header
extension-header = message-header
extension-header = message-header
2. 实体正文——entity-body = *OCTET
entity-body := Content-Encoding( Content-Type( data ) )
八、 连接(connection)
1. 持续连接——优点
持续连接是任何HTTP连接的缺省方式,支持持续连接的客户机可以以流水线方式发送请求
代理服务器
持续连接是任何HTTP连接的缺省方式,支持持续连接的客户机可以以流水线方式发送请求
代理服务器
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论