有时候经常见到一些响应码,在这里简单系统地做个记录.

HTTP请求头

消息头根据不同的上下文可分为四种:

  • 通用首部(general headers):可以应用于请求和响应中但不能用于消息内容自身的HTTP首部,可以是请求头和响应头,但不能是实体头部
  • 请求头部(request headers):包含有关要获取的资源或者客户端本身信息的消息头

    某些请求头如 Accept、Accept-、 If- 允许执行条件请求。某些请求头如:Cookie, User-Agent 和 Referer 描述了请求本身以确保服务端能返回正确的响应。

  • 响应头部(response headers):用于http响应中与响应消息主体无关的一类HTTP header.包含响应的补充信息,如其位置或服务器本身的消息头(如版本和位置).如Age, Location 和 Server都属于响应头.
  • 实体头部(entity headers):描述实体消息内容.可用于请求或响应中. 如如Content-Length,Content-Language,Content-Encoding之类的报头都是实体报头。

HTTP的请求方式

  • GET:请求一个指定资源的表示形式,使用GET的请求应只用于获取数据.
  • POST: 将数据发送至服务器,由头部的Content—Type指定请求体.
  • PUT:创建一个新的资源或者使用一个请求有效载荷替代目标资源.

    • 与POST的不同: PUT请求是幂等的,请求一次或多次都产生相同的作用.而连续相同的POST请求也许会有附加作用,类似通过一个订单几次.
  • HEAD: 请求一个与GET的响应相同的响应,但是只有响应头.
  • Connect:建立一个到目标资源服务器的隧道.
  • DELETE:删除指定的资源.
  • OPTIONS:描述目标资源的通信选项.
  • TRACE:执行一个到目标资源的消息回环测试.
  • PATCH:对部分资源应用部分进行修改.

HTTP的返回码

指示特定请求是否成功完成.共五个部分:

  • 信息响应

    • 100 Continue: 迄今内容可行,客户端应该继续请求.
    • 101 Switching Protocl: 响应客户端的 Upgrade 标头发送的,并且指示服务器正在切换的协议。
    • 102 Processing: 服务器已收到正在处理该请求,但无响应可用.
    • 103 Early Hints: 与Link链接头一起使用,已允许用户代理在服务器仍在准备响应时开始预加载资源.
  • 成功响应

    • 200 OK:请求成功.其含义取决于HTTP方法:

      • GET:资源已被提取并在.
      • HEAD:实体标头位于消息中.
      • POST:描述动作结果的资源在消息体中传输.
      • TRACE:消息正文包含服务器收到的请求消息.
    • 201 Created:POST或PUT请求成功后服务器创建了新的资源.
    • 202 Accepted:请求已接收,还未响应.
    • 203 Non-Authority Information:服务器成功处理请求,但返回的实体头部信息不是原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝.
    • 204 No Content:服务器成功处理请求但不需返回任何内容,并希望返回更新了的元信息.禁止包含任何消息体,始终以消息头后的第一个空行结尾.
    • 205 Reset Content:服务器成功处理请求且没有返回任何内容,要求请求者重置文档视图.主要被用于接收用户输入后立即重置表单.
    • 206 Partial Content:成功处理部分GET请求,用于实现断点续传或多段同时下载等.
    • 207 Multi-Status:由WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。
    • 208 Already Reported:在 DAV 里面使用: propstat 响应元素以避免重复枚举多个绑定的内部成员到同一个集合。
    • 226 IM Used:在 DAV 里面使用: propstat 响应元素以避免重复枚举多个绑定的内部成员到同一个集合。
  • 重定向

    • 300 Multipe Chioce:该请求拥有多种可能的响应。用户代理或者用户自身应该从中选择一个。由于没有如何进行选择的标准方法,这个状态码极少使用。
    • 301 Moved Permanently:说明请求的资源已经被移动到了由 Location 头部指定的url上,是固定的不会再改变。搜索引擎会根据该响应修正。
    • 302 Not Found:请求的资源现在临时从不同的 URI 响应请求。
    • 303 See Other:通常作为 PUT 或 POST 操作的返回结果,它表示重定向链接指向的不是新上传的资源,而是另外一个页面.
    • 304 Not Modified:说明无需再次传输请求的内容,也就是说可以使用缓存的内容。
    • 305 Use Proxy:被请求的资源必须通过指定的代理才能被访问。
    • 306 unused:已不被使用.
    • 307 Temperary Redirect:临时重定向响应状态码,表示请求的资源暂时地被移动到了响应的 Location 首部所指向的 URL 上。
    • 308 Permanent Redirect:请求的资源已经被永久的移动到了由 Location 首部指定的 URL 上。
  • 客户端响应

    • 400 Bad Request:语义有误,当前无法被服务器理解,除非修改,否则客户端不应重复提交这个请求.或者请求参数有误.
    • 401 Unauthorized:当前请求需要用户验证。该响应必须包含一个适用于被请求资源的WWW-Authenticate 信息头用以询问用户信息。
    • 402 Payment Required:最初目的是用于数字支付系统,还未使用.
    • 403 Forbidden: 服务器有能力处理该请求,但是拒绝授权访问。
    • 404 Not Found: 客户端错误,服务器端无法找到所请求的资源. 服务器不知道资源临时还是永久丢失.永久丢失应是410.
    • 405 Method Not Allowed:服务器禁止了使用当前 HTTP 方法的请求。
    • 406 Not Acceptable:客户端错误,指代服务器端无法提供与 Accept-Charset 以及 Accept-Language 消息头指定的值相匹配的响应。极少使用.
    • 407 Proxy Authentication Required:客户端错误,缺乏位于浏览器与可以访问所请求资源的服务器之间的代理服务器(proxy server)要求的身份验证凭证,发送的请求尚未得到满足。
    • 408 Request Timeout:请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改。
    • 409 Conflict:求与服务器端目标资源的当前状态相冲突。
    • 410 Gone:请求的目标资源永久性丢失.不清楚临时还是永久应使用404.
    • 411 Length Required:客户端错误,表示由于缺少确定的Content-Length 首部字段,服务器拒绝客户端的请求。
    • 412 Precondition Faild:客户端错误,意味着对于目标资源的访问请求被拒绝。常发生于采用除GET和HEAD之外的方法进行条件请求时,由首部字段 If-Unmodified-Since 或 If-None-Match 规定的先决条件不成立的情况下。
    • 413 Payload Too Large:请求主体的大小超过了服务器愿意或有能力处理的限度,服务器可能会(may)关闭连接以防止客户端继续发送该请求。
    • 414 URL Too Long:客户端所请求的 URI 超过了服务器允许的范围。
    • 415 Unsupported Media Type:服务器不支持其有效载荷的格式,拒绝接受客户端的请求。
    • 416 Range Not Satisfied:对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。
    • 417 Excecation Failed:服务器无法满足 Expect 请求标头字段指示的期望值.
    • 418 I‘m a teapot:客户端错误响应代码表示服务器拒绝冲泡咖啡,因为它是个茶壶。
    • 421 Misdirected Request:针对无法产生响应的服务器。 这可以由服务器发送,该服务器未配置为针对包含在请求 URI 中的方案和权限的组合产生响应。
    • 422 Unprocessable Entity:请求格式良好,但由于语义错误而无法遵循。
    • 423 Locked:正在访问的资源被锁定。
    • 424 Failed Dependency:由于先前的请求失败,所以此次请求失败。
    • 425 Too Early:服务器不愿意冒风险来处理该请求.处理该请求可能会被重放.
    • 426 Upgrade Required:服务器拒绝使用当前协议执行请求,但可能在客户机升级到其他协议后愿意这样做。 服务器在 426 响应中发送 Upgrade 头以指示所需的协议。
    • 428 Procondition Required: 服务器端要求发送条件请求。一般意味If-Match丢失.
    • 429 Too Many Requests:用户在给定的时间内发送了太多请求.
    • 431 Request Header Fields Too Large:请求中的首部字段的值过大,服务器拒绝接受客户端的请求。
    • 451 Unavailable For Legal Reason:用户请求非法资源
  • 服务端响应

    • 500 Internal Server Error
      服务器遇到了不知道如何处理的情况。
    • 501 Not Implemented
      此请求方法不被服务器支持且无法被处理。只有GET和HEAD是要求服务器支持的,它们必定不会返回此错误代码。
    • 502 Bad Gateway
      此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应。
    • 503 Service Unavailable
      服务器没有准备好处理请求。 常见原因是服务器因维护或重载而停机。 请注意,与此响应一起,应发送解释问题的用户友好页面。 这个响应应该用于临时条件和 Retry-After:如果可能的话,HTTP头应该包含恢复服务之前的估计时间。 网站管理员还必须注意与此响应一起发送的与缓存相关的标头,因为这些临时条件响应通常不应被缓存。
    • 504 Gateway Timeout:当服务器作为网关,不能及时得到响应时返回此错误代码。
    • 505 HTTP Version Not Supported:服务器不支持请求中所使用的HTTP协议版本。
    • 506 Variant Also Negotiates:服务器有一个内部配置错误:对请求的透明内容协商导致循环引用。
    • 507 Insufficient Storage:服务器有内部配置错误:所选的变体资源被配置为参与透明内容协商本身,因此不是协商过程中的适当端点。
    • 508 Loop Detected (WebDAV):服务器在处理请求时检测到无限循环。
    • 510 Not Extended:客户端需要对请求进一步扩展,服务器才能实现它。服务器会回复客户端发出扩展请求所需的所有信息。
    • 511 Network Authentication Required:指示客户端需要进行身份验证才能获得网络访问权限。

参考链接 HTTP官方文档