基础 - 常见状态码

  • 作者:KK

  • 发表日期:2017.11.29


前言

HTTP状态码有很多种,都是3位数状态码,分别有1、2、3、4、5开头,没有6开头,除非你自定义。

上网搜“ HTTP状态码 ”就有许多状态码大全可以查了,这里只介绍常见的,至少是我工作了5年所碰到的。


常见状态码列表

  • 200:通讯正常。

  • 301:永久重定向到别的URL。

    既然重定向,那就要说明重定向到哪个URL:

    • 同步请求的时候重定向URL在Location响应头里。

    • ajax请求的时候重定向URL在X-Redirect响应头里。

  • 302:临时重定向。

    同上,啰嗦一下:

    • 同步请求的时候重定向URL在Location响应头里。

    • ajax请求的时候重定向URL在X-Redirect响应头里。

  • 304:所请求的资源没有被修改过。

    通常被浏览器缓存过的CSS、JS再次被请求的时候会被服务器如此响应,并且不会附带数据的报文内容,浏览器收到304后直接会从浏览器缓存里调取缓存的文件进行页面渲染。

  • 400:坏的请求。

    指的是请求报文的主义不正确,或者参数不正确,没有按照http接口文档构造报文导致的。

  • 401:要求对客户端进行http基础认证(Http Basic Auth)

  • 403:被禁止。

    服务器拒绝执行这个地址请求。

    如果是Linux服务器,通常是因为没有将主机目录授权给www用户,比如我通常会执行chown -R www:www /data/www/project1来授权给www用户。

    如果是Windows下开发遇到这个,那通常因为主机目录根本不存在。

  • 404:找不到这个地址资源。

  • 405:请求方法不允许。

    通常在 RESTFul 风格的URL设计下会发生这种问题,客户端忽略了限制的请求方法,用错了方法就会这样。

  • 500:服务器出错。

    这时候并没有具体说出什么错,可能是http服务器出错,也可能是服务端语言运行出错,如果是编程语言的问题,还可以自己决定是否要将错误信息暴露在响应报文中,一般不会这么做,此时往往应该写日志提供故障排查支持。

  • 502:网关出错。

    比如DNS解析不出结果或者DNS指向了一个无效的IP往往会这样;还有一种情况就是本地开了代理,而这个代理出了问题甚至它无法帮我们将host解析成正确的IP。

  • 503:服务不可用。

    见是见过,但少见,忘记什么情况下会发生的了。