一次弄清常见的HTTP状态码
看了很多篇关于HTTP状态码的文章都写的很好很详细,但是看完几遍还是没有很好的消化,遂用自己的理解把常见状态码的含义梳理出来
常见状态码
-
1XX Informational(请求正在处理)
-
2XX Success(请求成功)
-
3XX Redirection(重定向) 需要进行附加操作以完成请求
-
4XX Client Error(客户端错误)
-
5XX Server Error(服务器错误)
-
200 OK 请求正常处理
-
204 请求处理成功 但是没有任何资源返回给客户端(一般用于只需客户端向服务端发送消息)
-
206 对资源的某一部分请求 响应报文中包含由 Content-Range 指定范围的实体内容
-
301永久重定向 如果把资源对应的URI保存为书签,则此时书签会根据Localtion首部字段提示的URI重新保存
-
302 临时重定向 临时地从旧地址A跳转到地址B
-
303 和301,302类似 当使用post方法访问一个资源时,把客户端以get的方式重定向到对应的URI,返回303状态码
-
304 资源已经找到,但是不满足条件,所以不把资源返回给客户端。常用于协商缓存。
-
400 请求报文内有语法错误
-
401 该状态码表示发送的请求需要通过HTTP认证,初次收到401响应浏览器弹出认证的对话窗口。若收到第二次401状态码,则说明第一次验证失败。
-
403 请求资源的访问被服务器拒绝,一般是未获得文件系统的访问权限,访问权限出现问题。
-
404 服务器上找不到请求资源 或路径错误
-
405 请求方法被服务端识别,但是服务端禁止使用该方法。可以用OPTIONS来查看服务器允许哪些访问方法
-
500 服务器端在执行请求时出错,一般是因为web应用出现bug
-
502 代理服务器或网关从上游服务器中收到无效响应
-
503 服务器暂时处于超负载或停机维护,目前无法处理请求
301和302的区别。
301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。
他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。 SEO302好于301
重定向原因:
- 网站调整(如改变网页目录结构);
- 网页被移到一个新地址;
- 网页扩展名改变(如应用需要把.php改成.Html或.shtml)。 这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。