Request = Request-Line
*(( general-header
| request-header
| entity-header ) CRLF)
CRLF
[ message-body ]
请求Message的第一行是固定的请求行,如:GET /rfc/rfc2616.txt HTTP/1.1
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
OPTIONS
,GET
,HEAD
,POST
,PUT
,DELETE
,TRACE
,CONNECT
Response = Status-Line
*(( general-header
| response-header
| entity-header ) CRLF)
CRLF
[ message-body ]
响应Message的第一行是固定的状态行,如:HTTP/1.1 200 OK
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
字段
用于指定某些媒体可接受的响应类型
语法:
Accept = "Accept" ":"
#( media-range [ accept-params ] )
media-range = ( "*/*"
| ( type "/" "*" )
| ( type "/" subtype )
) *( ";" parameter )
accept-params = ";" "q" "=" qvalue *( accept-extension )
accept-extension = ";" token [ "=" ( token | quoted-string ) ]
例子:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
用于指定指令在请求/响应链上的所有缓存机制必须遵守的约定,表明是否缓存,缓存时间等
语法:
Cache-Control = "Cache-Control" ":" 1#cache-directive
cache-directive = cache-request-directive
| cache-response-directive
cache-request-directive =
"no-cache" ;
| "no-store" ;
| "max-age" "=" delta-seconds ;
| "max-stale" [ "=" delta-seconds ] ;
| "min-fresh" "=" delta-seconds ;
| "no-transform" ;
| "only-if-cached" ;
| cache-extension ;
cache-response-directive =
"public" ;
| "private" [ "=" <"> 1#field-name <"> ] ;
| "no-cache" [ "=" <"> 1#field-name <"> ];
| "no-store" ;
| "no-transform" ;
| "must-revalidate" ;
| "proxy-revalidate" ;
| "max-age" "=" delta-seconds ;
| "s-maxage" "=" delta-seconds ;
| cache-extension ;
cache-extension = token [ "=" ( token | quoted-string ) ]
例子:
Cache-Control: max-age=0
Cache-Control: max-age=3600
用于提供日期/时间,在这之后的响应被认为是过时的;
如果response中包含max-age的Cache-Control字段,则max-age的优先级比Expires的优先级高
语法:
Expires = "Expires" ":" HTTP-date
例子:
Expires: Tue, 21 Apr 2020 09:50:25 GMT
用于表示消息发出的日期时间,通常在Response响应头中必须包含Date字段,除了Response响应status是100(Continue)、 101(Switching
Protocols)、500(Internal Server Error)、503(Service Unavailable)等,或者Server没有一个时钟用来生成合理准确的日期时间等情况
语法:
Date = "Date" ":" HTTP-date
例子:
Date: Tue, 21 Apr 2020 09:32:18 GMT
用于指定发送者与服务器连接的需要的选项
语法:
Connection = "Connection" ":" 1#(connection-token)
connection-token = token
例子:
Connection: keep-alive
Connection: close
用于代理用户完成request,通常的user-agent是浏览器;
语法:
User-Agent = "User-Agent" ":" 1*( product | comment )
例子:
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36
用于表明响应request的服务器的信息
语法:
Server = "Server" ":" 1*( product | comment )
例子:
Server: Apache/2.4.18 (Ubuntu)
用于表明最后修改的时间
对于文件系统,是文件最后修改的时间
对于数据库系统,是最后一次更新记录的时间戳
语法:
Last-Modified = "Last-Modified" ":" HTTP-date
例子:
Last-Modified: Fri, 11 Jun 1999 18:46:53 GMT
用于表示请求后的状态,用3位整数表示
Item | Status | Description |
---|---|---|
Informational | 100 | Continue |
Informational | 101 | Switching Protocols |
Successful | 200 | OK |
Successful | 201 | Created |
Successful | 202 | Accepted |
Successful | 203 | Non-Authoritative Information |
Successful | 204 | No Content |
Successful | 205 | Reset Content |
Successful | 206 | Partial Content |
Redirection | 300 | Multiple Choices |
Redirection | 301 | Moved Permanently |
Redirection | 302 | Found |
Redirection | 303 | See Other |
Redirection | 304 | Not Modified |
Redirection | 305 | Use Proxy |
Redirection | 306 | (Unused) |
Redirection | 307 | Temporary Redirect |
Client Error | 400 | Bad Request |
Client Error | 401 | Unauthorized |
Client Error | 402 | Payment Required |
Client Error | 403 | Forbidden |
Client Error | 404 | Not Found |
Client Error | 405 | Method Not Allowed |
Client Error | 406 | Not Acceptable |
Client Error | 407 | Proxy Authentication Required |
Client Error | 408 | Request Timeout |
Client Error | 409 | Conflict |
Client Error | 410 | Gone |
Client Error | 411 | Length Required |
Client Error | 412 | Precondition Failed |
Client Error | 413 | Request Entity Too Large |
Client Error | 414 | Request-URI Too Long |
Client Error | 415 | Unsupported Media Type |
Client Error | 416 | Requested Range Not Satisfiable |
Client Error | 417 | Expectation Failed |
Server Error | 500 | Internal Server Error |
Server Error | 501 | Not Implemented |
Server Error | 502 | Bad Gateway |
Server Error | 503 | Service Unavailable |
Server Error | 504 | Gateway Timeout |
Server Error | 505 | HTTP Version Not Supported |
原文:https://www.cnblogs.com/myibu/p/12776175.html