请求(Request
)
请求行
- 请求行是以一个方法标记开始,后面跟随
Request-URI
和协议版本号
请求方法
Method = "OPTIONS"|"GET"|"HEAD"|"POST"|"PUT"|"DELETE"|"TRACE"|"CONNECT"|extension-method
- 响应的返回码通知客户端某个方法对当前资源是否被允许,
- 如果方法不允许,服务器会返回405状态码(方法不允许)
- 如果源服务器不能识别或没有实现某个方法,那么服务器会返回501状态码(没有实现)
请求URL
(Request-URI
)
- 通用资源标识,用于指定请求的请求资源
- 大多数请求是用于指定一个源服务器或网关上的资源。这种情况下,
URI
的绝对路径作为Request-URI
被传输。
// 例如是一个这样的请求行
GET http://www.w3.org/pub/www/TheProject.html HTTP/1.1
GET /pub/www/TheProject.html HTTP/1.1
Host: www.w3.org
请求资源
- 请求资源的精确定位是由请求里的
Request-URI
和host
的值决定的
- 对于
HTTP/1.1
的请求,遵循一下规则去请求资源:
- 如果
Request-URI
是绝对地址,那么host
(主机)是Request-URI
的一部分。任何出现在请求里的Host
的值都应当被忽略。
- 如果
Request-URI
不是绝对地址,而且请求里的Host
有值,那么host
(主机)由Host的值决定。
- 如果根据以上规则定义的主机对于服务器来说是一个无效的主机,那么服务器会返回400(坏请求)状态码。
请求头部
- 请求头部允许客户端自己附加信息,也允许在传递请求时附加信息发送给服务器。
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
响应消息。
状态行
- 响应消息的第一行是状态行,由协议版本以及数字状态码和相关的文本短语组成。
状态码与原因短语
Status-Code
是一个试图理解和满足请求的三位数整数码。
- 状态码的第一位数字定义相应类别。后两位数字没有任何分类角色。第一位数字有五种值:
- 1xx:报告(请求被接受到,继续处理)
- 2xx:成功(被成功地接受/理解/接受)
- 3xx:重发(为了完成请求必须采取进一步动作)
- 4xx:客户端出错(请求错的语法或不能被满足)
- 5xx:服务器出错(服务器无法完成原本可行的请求)
HTTP
状态码是可扩展的。HTTP应用程序不需要理解所有已注册状态码的含义。但是应用程序必须了解由第一位数字指定的状态码的类别。
响应头部
- 允许服务器在传送响应信息的时候附加信息。这些信息不能放在状态行里。
response-header = Accept-Ranges|Age|Etag|Localtion|Proxy-Autenticate|Retry-After|Server|Vary|WWW-Authenticate
- 响应头部也是随着协议版本而扩展,不被识别的值会被看作实体头部。
总结
- 看到请求头和响应头,联想到了什么?
- 欢迎点赞、评论