• 1XX 表示消息
  • 2XX 表示成功
  • 3XX 表示重定向
  • 4XX 表示请求错误
  • 5XX 表示服务器端错误

消息:请求已被接受,需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码。

成功:请求已成功被服务器接收、理解、并接受。

重定向:客户端需要采取进一步的操作才能完成请求。后续的请求地址在本次响应的 Location 域中指明。

请求错误:客户端发生了错误,妨碍了服务器的处理/请求有语法错误或请求无法实现。

服务器错误:服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

常见HTTP状态码

  • 200 OK
    表示请求成功 一切正常

  • 301 Moved Permanently
    重定向,客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL

  • 302 Found
    临时重定向,类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。

  • 304 Not Modified
    客户端有缓冲的文档并发出了一个条件性的请求。服务器告诉客户,原来缓冲的文档还可以继续使用。

  • 307 Temporary Redirect
    临时重定向,与302类似,只是强制要求使用POST方法。

  • 400 Bad Request
    请求出现语法错误。

  • 401 Unauthorized
    客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填 写合适的Authorization头后再次发出请求。

  • 403 Forbidden
    资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致

  • 404 Not Found
    无法找到指定位置的资源。

  • 405 Method Not Allowed
    请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。

  • 500 Internal Server Error
    服务器遇到了意料不到的情况,不能完成客户的请求。

  • 501 Not Implemented
    服务器不支持实现请求所需要的功能。

  • 502 Bad Gateway
    服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。

301 状态码(Moved Permanently)
301状态码在HTTP1.0和HTTP1.1规范中均代表永久重定向,对于post请求的重定向,还是需要用户确认之后才能重定向,并且应该以post方法发出重定向请求。
关于post请求重定向用户确认的问题,实际上浏览器都没有实现;而且post请求的重定向应该发起post请求,这里浏览器也并不一定遵守,所以说HTTP规范的实现并未严格按照HTTP规范的语义。

302 状态码(Moved Temporatily)
在http 1.0规范中,302表示临时重定向。出现该状态代码时,浏览器能够自动访问新的URL。
规范:原请求是get,可以自动重定向;原请求是post,则不能自动进行重定向。
实现:浏览器和服务器的实现并没有严格遵守HTTP中302的规范,浏览器即便原请求是post也会自动重定向,导致规范和实现出现了二义性,由此衍生了一些问题,譬如302劫持,因此在HTTP 1.1中将302的规范细化成了303和307,希望以此来消除二义性。

补充:302劫持——A站通过重定向到B站的资源xxoo,A站实际上什么都没做但是有一个比较友好的域名,web资源xxoo存在B站并由B站提供,但是B站的域名不那么友好,因此对搜索引擎而言,可能会保存A站的地址对应xxoo资源而不是B站,这就意味着B站出了资源版权、带宽、服务器的钱,但是用户通过搜索引擎搜索xxoo资源的时候出来的是A站,A站什么都没做却被索搜引擎广而告之用户,B站做了一切却不被用户知道,价值被A站窃取了。

303 状态码(See Other)
继承了HTTP 1.0中302的实现:无论原请求是get还是post,都可以自动进行重定向
303响应应该禁止被缓存。重定向的相应可能被缓存。

307 状态码
继承了HTTP 1.0中302的规范:原请求是GET 或 HEAD,则浏览器可以自动重定向;原请求是 POST,则不能自动进行重定向。

302、303、307 状态码辨析
在HTTP 1.1中,302是不再推荐使用的,只是为了兼容而作保留。为了细化HTTP1.0中302的语义,HTTP1.1引入了 303 和 307,主要用在对非 GET、HEAD 方法的响应上,而对于 GET 和 HEAD 的请求,可以自动重定向。

在 GET、HEAD 这些幂等的请求方式上,302、303、307 没啥区别,而对于 POST 就不同了,大部分浏览器的302 会将 POST 请求转为 GET,而 303 规范强制将 POST 转为 GET 请求,请求地址为 header 头中的 Location,307 则不一样,规范要求浏览器继续向 Location 的地址 POST 内容。

HTTP 常见状态码解析的更多相关文章

  1. http常见状态码解析

    自定义 Ajax原生编写ajax:function(opt){ var xmlhttp; //创建对象 if (window.XMLHttpRequest){// code for IE7+, Fir ...

  2. HTTP协议—常见的HTTP响应状态码解析

    常见的HTTP响应状态码解析 1XX Informational(信息性状态码) 2XX Success(成功状态码) 3XX Redirection(重定向状态码) 4XX Client Error ...

  3. http常见状态码及其解析

    HTTP状态码常见状态码及其解析 状态码 状态码英文名称 中文描述 100 Continue 继续.客户端应继续其请求 101 Switching Protocols 切换协议.服务器根据客户端的请求 ...

  4. HTTP协议、HTTP请求方法、常见状态码、HTTP消息

    HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息 ...

  5. 了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别

    HTTP协议常见状态码状态码的作用负责标记客户端请求服务器的返回结果,标记服务器端的处理是否正常,通知出现的错误等等职责,借助客户端可以知道客户端是否正常请求服务端.五大类:1XX(信息类状态码,接收 ...

  6. http协议与常见状态码

    什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...

  7. http常见状态码有哪些?

    ajax常见面试题 1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术. ajax用来与后台交互 2:原生js ajax请求有几个 ...

  8. 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码

    一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...

  9. Python Requests库 Get和Post的区别和Http常见状态码

    (1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2)   GET方式提交的数据最多只能有1024 Byte,而P ...

随机推荐

  1. XSS攻击过滤处理

    关于XSS攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. XSS漏洞的危害 网络钓鱼,包括盗取各类用户账号: 窃取用户cooki ...

  2. 《MySQL必知必会》读书笔记_3

    PS:这次的信息量有点大. 聚集不同值 SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003 ...

  3. JavaScript脚本放在哪里用户体验好

    javascript代码写在<head>里面: 由于这时候网页主体(body)还未加载,所以这里适合放一些不是立即执行的自定义函数,立即执行的语句则很可能会出错(视浏览器而定) javas ...

  4. The Beam Model:Stream &amp; Tables翻译(上)

    本文由  网易云发布. 作者:周思华 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 本文尝试描述Beam模型和Stream & Table理论间的关系(前者描述于数据流模型论文.the ...

  5. 使用Selenium对新浪微博模拟登录

    Selenium的配置 在项目中引入Selenium库 下载chromedriver.exe 在项目代码中加入chromedriver位置的配置 使用Selenium Selenim语法 智能等待 隐 ...

  6. 智能指针auto_ptr & shared_ptr

    转载:智能指针auto_ptr 很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它.这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生 ...

  7. 【方案】mvc 保证定时器回收限制

    在项目中我们或多或少的遇到一些需要定时触发或者计算的东西,这个时候我们就需要定时器来作为解决方案.非常好思路清晰,业务逻辑完好,定时器也开好了,当我们信心满满的挂到IIS服务器的时候,发现写的定时器在 ...

  8. Java 的字节流文件读取(一)

    上篇文章我们介绍了抽象化磁盘文件的 File 类型,它仅仅用于抽象化描述一个磁盘文件或目录,却不具备访问和修改一个文件内容的能力. Java 的 IO 流就是用于读写文件内容的一种设计,它能完成将磁盘 ...

  9. Map Reduce和流处理

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由@从流域到海域翻译,发表于腾讯云+社区 map()和reduce()是在集群式设备上用来做大规模数据处理的方法,用户定义一个特定的映射 ...

  10. [Mysql]——通过例子理解事务的4种隔离级别(转)

    SQL标准定义了4种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的. 低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. 一.事务隔离级别分类 第1级别:R ...