Http状态码

129 阅读2分钟

状态码是描述请求的结果,用户可以知道服务端是正常处理了请求还是出现了错误。

  • 1xx:信息性状态码,接受的请求正在处理。
  • 2xx:成功状态码,请求正常处理完毕。
  • 3xx:重定向状态码,需要进行附加操作,才能完成请求。
  • 4xx:客户端错误状态码,服务端无法处理请求。
  • 5xx:服务端错误状态码,服务器处理请求出错。

常见状态码:

  • 204: 请求成功,但返回响应报文没有实体主体。本来也不允许返回任何实体的主体。比如当浏览器发出请求处理后,返回204,浏览器显示的页面不发生更新。

  • 206: 表示客户端进行了范围请求,服务端执行了这部分GET请求。

  • 301: 永久性重定向,请求的资源已经分配了新的URI,以后应使用新的URI。

  • 302: 临时重定向,表示请求的资源已经分配了新的URI,本次请求使用心得URI访问,下次就不一定了。

  • 303: 表示请求对应的资源存在另一个URI,应该用GET方法请求资源。303和302有着相同的功能,但是303明确告诉客户端应该用GET方法去获取资源,这个和302有区别。

301,302,303状态码返回时,几乎所有浏览器都会把POST改为GET,并删除请求主体,再次发送请求。虽然301,302标准是禁止将POST改为GET,但实际大家都会这么做。

  • 304: 客户端发送附带条件的请求,服务端允许访问资源,但是发出的请求为满足条件,会直接返回304。附带条件的请求值GET方法,请求报文中包含If-MAtch,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任意一个。

  • 307: 临时重定向,和302有相同含义,307会遵守浏览器标准,不会从POST变成GET。

  • 400: 请求报文中存在语法错误。

  • 401: 表示请求需要有HTTP认证。若之前进行过1次请求,则返回404表示用户认证失败。

  • 403: 表明对请求资源的访问被服务器拒绝了。

  • 404: 服务器没有请求的资源。

  • 500: 服务端执行请求时,发生了错误。

  • 503: 表明服务端在处于超负载或者正在进行停机维护,无法处理请求。如果服务器事先得知解除以上状态需要的时间,可以写入Retry-After首部字段,再返回给客户端。