HTTP协议的响应头、请求头、返回码全解

一、HTTP请求

HTTP请求由三部分组成,请求行,消息报头,请求正文

http请求行以一个方法开头,以空格开头,后面跟着URI以及http协议版本,每行结尾使用回车和换行,CRLF标识回车换行

1、请求方法:
  • GET:请求获取URI所标识的资源(指定的页面信息),并返回实体主体。

  • POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体

  • HEAD:请求获取由URI所标识的的资源的响应头信息,只请求页面的首部。

  • PUT:从客户端向服务器传送的数据取代指定的文档的内容。

  • DELETE:请求服务器删除URI所表示的资源

  • TRACE:请求服务器在响应中的实体主体部分返回所得到的内容,用于测试或诊断。

  • PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。

  • MOVE: 请求服务器将指定的页面移至另一个网络地址。

  • COPY: 请求服务器将指定的页面拷贝至另一个网络地址。

  • LINK: 请求服务器建立链接关系。

  • UNLINK: 断开链接关系。

  • WRAPPED: 允许客户端发送经过封装的请求。

  • CONNECT:

  • OPTIONS: 允许客户端查看服务器的性能。

  • eg:GET http://www.baidu.com/ HTTP1.0(CRLF)

2、完整请求实例:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/;q=0.8(CRLF)
Accept-Encoding:gzip, deflate, sdch(CRLF)
Accept-Language:zh-CN,zh;q=0.8(CRLF)
Connection:keep-alive(CRLF)
Cookie:(CRLF)
Host:www.baidu.com(CRLF)
Upgrade-Insecure-Requests:1(CRLF)
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36(CRLF)

二、请求报头:

允许客户端向服务器端传递附加信息

  • Accept:请求报头域用于指定客户端接收哪些类型的信息。如:Accept:image/gif,text/html
    具体一点的类型查看http://tool.oschina.net/commons

  • Accept-Charset:请求报头域用于指定客户端接受的字符集,缺省表示任何字符集都可以接受

  • Accetpt-Encoding:指定浏览器可以支持的web服务器返回内容压缩编码类型。如:Accept-Encoding:gzip.deflate

  • Accept-Language:指定客户端可以接受的语言。 如:Accept-Language:zh-cn

  • Authorization:用于证明证明客户端有权查看某个资源

  • Cache-Control:指定所有缓存机制在整个 请求/响应链中必须服从的指令。

  • Cache-Control值:
    在这里插入图片描述

  • Connection:表示是否需要持久连接,(HTTP1.1默认进行持久连接)。如:Connection:close,Connection:keep-Alive,表示持久连接

  • Cookie:HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发给web服务器

  • Content-Length:请求的内容长度

  • Content-Type:请求与实体对应的MIME信息

  • Date:请求发送的时间和日期

  • Host:指定请求的服务器的域名和端口号

  • Except:请求特定的服务器行为

  • If-Match:请求内容与实体相匹配才有效

  • If-Modified-Since:如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码

  • Pragma:用来包含特定的指令。如:Pragma: no-cache

  • Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

  • User-Agent:允许客户端将它的操作系统、浏览器和其它属性告诉服务器

三、响应报头

  • Location:用于重定向接受者到一个新的位置

  • Accept-Charset:表明服务器是否支持指定范围请求及哪种类型的分段请求

  • Age:从原始服务器到代理缓存形成的估算时间(以秒计,非负

  • Allow:对某网络资源的有效的请求行为,不允许则返回405。如:Allow: GET, HEAD

  • Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型。如:Cache-Control: no-cache

  • Content-Encoding:web服务器支持的返回内容压缩编码类型。如:Content-Encoding: gzip

  • Content-Language:响应体的语言。如:Content-Language: en,zh

  • Content-Length:响应体的长度。如:Content-Length: 348

  • Content-Location:请求资源可替代的备用的另一地址。如:Content-Location: /index.htm

  • Content-MD5:返回资源的MD5校验值

  • Content-Range:在整个返回体中本部分的字节位置。如:Content-Range: bytes 21010-47021/47022

  • Content-Type:返回内容的MIME类型。如:Content-Type: text/html; charset=utf-8

  • Date:原始服务器消息发出的时间

  • Expires:响应过期的日期和时间。

  • Pragma:包括实现特定的指令,它可应用到响应链上的任何接收方。如:Pragma: no-cache

  • Proxy-Authenticate:它指出认证方案和可应用到代理的该URL上的参数。如:Proxy-Authenticate: Basic

  • refresh:表示浏览器应该在多少时间之后刷新文档,以秒记。如:response.setHeader(“refresh”,“3”),实现页面每3s刷新一次;

  • response.setHeader(“refresh”,“3;url=’/a/index.html’”),实现3s刷新并跳转到指定的URl

  • Retry-After:如果实体暂时不可取,通知客户端在指定时间之后再次尝试。如:Retry-After: 120

  • Server:web服务器软件名称。如:Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

  • Set-Cookie:设置Http Cookie

  • WWW-Authenticate:表明客户端请求实体应该使用的授权方案。如:WWW-Authenticate: Basic

四、返回码大全

1xx消息:请求已被接受,需要继续处理。HTTP/1.0协议中没有定义任何1xx状态码。
  • 100 Continue 客户端应当继续发送剩余请求。
  • 101 Switching Protocols 服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。
  • 102 Processing 处理将被继续执行。
2xx成功:请求已成功被服务器接收、理解并接受。
  • 200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回。
  • 201 Created 请求已被实现,且有一个新的资源已经依请求的需要而创建。
  • 202 Accepted 服务器已经接受请求,但尚未处理。
  • 203 Non-Authoritative Information服务器已经成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝。
  • 204 No Content 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。
  • 205 Reset Content 服务器成功处理了请求,且没有返回任何内容。与204相应不同,此状态码的响应要求请求者重置文档视图。
  • 206 Partial Content 服务器已成功处理了部分GET请求。可以实现断点续传。
  • 207 Multi-Status代表之后的消息体将是一个XML消息。
3xx重定向:
  • 300 Multiple Choices被请求的资源有一系列可供选择的回馈信息,用户自行选择一个进行重定向。
  • 301 Moved Permanently被请求的资源已永久移动到新的位置。
  • 302 Found请求的资源现在临时从不同的URI响应请求。
  • 303 See Other对应当前请求的响应可以在另一个URI上被找到而且客户端应该采用GET方式访问那个资源。
  • 304 Not Modified文档的内容没有发生改变。且304响应禁止包含消息体,因此始终以消息头后第一个空行结尾。
  • 305 Use Proxy被请求的资源必须通过指定的代理才能访问。
  • 306 Switch Proxy已弃用
  • 307 Temporary Redirect请求的资源现在临时从不同的URI响应请求。
4xx:客户端错误
  • 400 Bad Request请求包含语法错误。
  • 401 Unauthorized当前请求需要用户验证。
  • 402 Payment Required保留。
  • 403 Forbidden服务器已理解请求,但拒绝执行它。
  • 404 Not Found请求所需要的资源为在服务器上被发现。
  • 405 Method Not Allowed请求行中指定的方法不能用于请求相应的资源。
  • 406 Not Acceptable请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。
  • 407 Proxy Authentication Required与401响应类似,只不过客户端必须在代理服务器上进行身份验证。
  • 408 Request Timeout请求超时。
  • 409 Conflict由于被请求的资源的当前状态之间存在冲突,请求无法完成。
  • 410 Gone被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。
  • 411 Length Required服务器拒绝在没有定义Content-Length头的情况下接受请求。
  • 412 Precondition Failed服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。
  • 413 Request Entity Too Large服务器拒绝处理当前请求,因为该请求提交的实体数据大小超过了服务器愿意或者能够处理的范围。
  • 414 Request-URI Too Long请求的URI长度超过了服务器能够解释的长度,因此服务器拒绝对该请求提供服务。
  • 415 Unsupported Media Type对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。
  • 416 Requested Range Not Satisfiable如果请求中包含了Range请求头,并且Range中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义If-Range请求头,那么服务器就应当返回416状态码。
  • 417 Expectation Failed在请求头Expect中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,Expect的内容无法被满足。
  • 418 I’m a teapot
  • 421 There are too many connections from your internet address从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。
  • 422 Unprocessable Entity请求格式正确,但是由于含有语义错误,无法响应。
  • 423 Locked当前资源被锁定。
  • 424 Failed Dependency由于之前的某个请求发生的错误,导致当前请求失败,例如PROPPATCH。
  • 425 Unordered Collection
  • 426 Upgrade Required客户端应当切换到TLS/1.0。
  • 449 Retry With由微软扩展,代表请求应当在执行完适当的操作后进行重试。
  • 451 Unavailable For Legal Reasons由IETF核准,代表该访问因法律的要求而被拒绝。
5xx:服务器错误
  • 500 Internal Server Error服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
  • 501 Not Implemented服务器不支持当前请求所需要的某个功能。**
  • 502 Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
  • 503 Service Unavailable由于临时的服务器维护或者过载,服务器当前无法处理请求。
  • 504 Gateway Timeout作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
  • 505 HTTP Version Not Supported服务器不支持,或者拒绝支持在请求中使用的HTTP版本。
  • 506 Variant Also Negotiates代表服务器存在内部配置错误
  • 507 Insufficient Storage服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。
  • 509 Bandwidth Limit Exceeded服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。
  • 510 Not Extended获取资源所需要的策略并没有被满足。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章