51CTO首页
AI.x社区
博客
学堂
精品班
直播训练营
企业培训
鸿蒙开发者社区
WOT技术大会
AIGC创新中国行
IT证书
公众号矩阵
移动端

HTTP协议之状态码详解

网络 网络管理
HTTP状态码的学习资料到处都有,但是都是理论上讲解。 本文介绍HTTP协议中的HTTP状态码(HTTP Status Code), 会对大部分的状态码都进行了详细的实例讲解。

HTTP状态码,我都是现查现用。 我以前记得几个常用的状态码,比如200,302,304,404, 503。 一般来说我也只需要了解这些常用的状态码就可以了。 如果是做AJAX,REST,网络爬虫,机器人等程序。还是需要了解其他状态码。 本文我花了一个多月的时间把所有的状态码都总结了下,内容太多,看的时候麻烦耐心点了。

HTTP状态码的学习资料到处都有,但是都是理论上讲解。 本文介绍HTTP协议中的HTTP状态码(HTTP Status Code), 会对大部分的状态码都进行了详细的实例讲解。

要了解状态码,应该在实例中去理解状态码的意义,否则看了也会忘记的。

用Fiddler工具可以查看HTTP Request和Response, 还可以方便地查看Response中的状态码, 如果不熟悉这个工具,可以先参考【Fiddler教程】

为了重现HTTP 状态码,本文会使用Fiddler Composer来创建“特殊的HTTP Request”.可以参考【Fiddler Composer创建和发送HTTP Request】

什么是HTTP状态码

HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。

状态码位于HTTP Response 的***行中,会返回一个”三位数字的状态码“和一个“状态消息”。 ”三位数字的状态码“便于程序进行处理, “状态消息”更便于人理解。

如下图, 当客户端请求一个不存在的URL的时候, Web服务器会返回 “HTTP/1.1 404 Not Found” 告诉浏览器客户端。 服务器无法找到所请求的URL。

 

 

状态码分类

HTTP状态码被分为五大类, 目前我们使用的HTTP协议版本是1.1, 支持以下的状态码。随着协议的发展,HTTP规范中会定义更多的状态码。

小技巧: 假如你看到一个状态码518, 你并不知道具体518是什么意思。 这时候你只要知道518是属于(5XX,服务器错误就可以了)

状态码分类

常见的状态码

一般人只需要了解以下常见的状态码就够了, 如果你想了解更多, 请继续往下看。

常见的状态码

1XX信息性状态码

这些状态码是HTTP 1.1引入的。 对于这些状态码的价值还存在争论 (我个人从来没见过这些状态码, 也没有理解这些状态码。)

1XX信息性状态码

2XX成功状态码

客户端发起请求时, 这些请求通常都是成功的。服务器有一组用来表示成功的状态码,分别对应于不同类型的请求。

2XX成功状态码#p#

3XX重定向状态码

重定向状态码用来告诉浏览器客户端,它们访问的资源已被移动, Web服务器发送一个重定向状态码和一个可选的Location Header, 告诉客户端新的资源地址在哪。

浏览器客户端会自动用Location中提供的地址,重新发送新的Request。 这个过程对用户来说是透明的。

301和302 非常相似, 一个是***转移,一个是临时转移。

(SEO中,搜索引擎如果碰到301, 比如网页A用301重定向到网页B,搜索引擎可以肯定网页A***性改变地址,就会把网页B当做***有效目标)

302,303,307 是一样。 这是因为302是HTTP 1.0定义的, HTTP1.1中使用303,307. 同时又保留了302. (但在现实中,我们还是用302,我是没见过303和307)

所以这一节, 我们只需要掌握302, 304 就可以了。

3XX重定向状态码

4XX客户端错误状态码

有时客户端会发送一些服务器无法处理的东西,比如格式错误的Request, 或者最常见的是, 请求一个不存在的URL。

4XX客户端错误状态码

5XX服务器错误状态码

有时候客户端发送了一条有效Request, Web服务器自身却出错了。 可能是Web服务器运行出错了, 或者网站都挂了。 5XX就是用来描述服务器错误的。

5XX服务器错误状态码

204 No Content(没有内容)

返回的Response中只有一些Header和一个状态行, 没有实体的主题内容(没有response body)

204状态码的作用在于: 1. 在不获取资源的情况下了解资源的情况(比如判断其类型)

2. 通过查看Response中的状态码, 看看某个对象是否存在

3. 通过查看Header, 测试资源是否被修改了。

实例:先打开Fiddler, 然后启动浏览器访问ditu.google.cn, 你会捕获到很多204

 

#p#

 

206 Partial Content(部分内容)

206状态码代表服务器已经成功处理了部分GET请求(只有发送GET 方法的request, web服务器才可能返回206),

应用场景:

1. FlashGet, 迅雷或者HTTP下载工具都是使用206状态码来实现断点续传

2. 将以个大文档分解为多个下载段同时下载 比如,在线看视频

实例: 一些流媒体技术比如在线视频,可以边看边下载。 就是使用206来实现的。

打开Fiddler, 然后用浏览器打开“搜狐视频中的绿箭侠” http://tv.sohu.com/20121011/n354681393.shtml 然后你在Fiddler中就能看到一堆的206

1. 浏览器发送一个Get 方法的request. header中包含 Range: bytes=5303296-5336063. (意思就是请求得到5303296-5336063这个范围的数据)。

2. Web服务器返回一个206 的Response. header中包含Content-Range: bytes 5303296-5336063/12129376(表明这次返回的内容范围)

 

 

301 Moved Permanently(***移除)

请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置

例如: 1. 浏览器客户端访问 http://map.google.cn

2. Web服务器返回Response 301,Location=http://titu.google.cn (告诉客户端我们的资源位于这里, )

3. 浏览器客户端会自动再发送一个Request 去访问http://titu.google.cn

 

 

400 Bad Request(坏请求)

发送的Request中的数据有错误(比如:表单有错误,Cookie有错误), 这个我们也经常见到。

实例: 还没想到, 想到了再贴个实例上来。

403 Forbidden(禁止)

Web客户端发送的请求被Web服务器拒绝了, 如果服务器想说明为什么拒绝请求,可以包含实体的主体部分来对原因进行描述。但这个状态码通常是服务器不想说明拒绝原因。

访问下面的URL, 会被服务器拒绝. 并且返回403状态码

http://t2.baidu.com/it/u=1791561788,200960144&fm=0&gp=0.jpg#p#

404 Page not Found (请求的资源不存在)

这个大家都懂的, 值得一提的是: 腾讯把404页面做成了“寻找被拐儿童”

 

 

405 Method Not Allowed(不允许使用的方法)

405是指Web服务器不支持Request中的方法。

我个人认为状态码405Method Not Allowed和501 Not Implemented 是一样的意思。都是不支持Request的方法。 (目前我还不知道这两个的区别)

实例: 发送一个是trace方法的Request 给www.google.com

 

 

 

 

411 Length Required(要求长度指示)

服务器要求在Request中包含Content-Length。

当浏览器使用Post方法,发送数据给Web服务器时, 必须要有Content-Length。这样Web服务器才知道你要发送多少数据,否则Web服务器会返回411状态码

实例: 发送一个Post方法的Request 给www.google.com. Request中没有Content-Length

 

 

 

#p#

 

413 Request Entity Too Large(请求实体太大)

作用:客户端发送的实体主体部分比服务器能够或者希望处理的要大。 一般情况下我们看不到这个状态码。 因为浏览器不会发送太大的数据给网站,但是机器人可能会。

实例: 用post方法发送一个大文件(100MB以上)给www.google.com

 

 

 

 

414 Request URI Too Long(请求URI太长)

就是说Request URI太长, 一般浏览器本身对URI的长度就会有限制,所以不会发送URI很长的Request. 我们平常是根本看不到414错误的。 但是机器人可以发送很长URI。

例如:我们用Fiddler Composer发送一个很长的URI给Google, 比如 "www.google.com?q=asdfasdasf.." q=后面的参数很长。 就可以看到414了

 

 

 

#p#

 

500 Internal Server Error(内部服务器错误)

这个太常见了, 我们开发网站的时候,当我们的程序出错了时,就会返回500错误。

实例:ASP.NET 程序出错

 

 

 

 

501 Not Implemented(未实现)

客户端发起的请求超出服务器的能力范围(比如,使用了服务器不支持的请求方法)时,使用此状态码)。 一般的Web服务器只支持GET和POST方法。

实例: 使用Fiddler Composer 给www.qq.com, 发送一个OPTIONS 方法的Request. 服务器就能返回501了。

 

 

 

 

502 Bad Gateway(网关故障)

代理使用的服务器遇到了上游的无效响应。

Fiddler本身就是代理服务器。 当我们访问www.facebook.com,这网站被我们天朝屏蔽了。 所以我们可以得到502

 

 

505 HTTP Version Not Supported(不支持的HTTP版本)

表示Web服务器不支持此HTTP协议的版本。

众所周知我们现在使用的HTTP协议版本是HTTP/1.1, 如果我们发送一个HTTP/2.0 的request 给博客园, 博客园肯定不能支持HTTP/2.0,所以会返回505

想要发送这样的request, 可以使用Fiddler工具中的Composer来发送自定义的request, 如下图。

 

 

 

 

责任编辑:林琳 来源: 博客园
相关推荐
你见过 HTTP 哪些状态
当请求多媒体数据数据较大时,会进行分片传输。当你在B站观看视频,打开开发者工具,会发现许多206状态码以及响应头ContentRange

2020-10-23 06:58:48

HTTP 状态码 服务器
http状态竟然可以这样记
标题皮了一下,但是内容应该算是比较用心的,不是直接抄了一下官方文档和一堆抽象的术语,尽量配合实例解释的通俗一些。

2019-02-26 14:43:50

http 状态码 前端
HTTP协议应用基础详解
超文本传输协议(HTTPHypertexttransferprotocol)是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。

2014-06-05 10:21:29

HTTP
详解Tomcat HTTP协议与AJP协议
在实际应用中,常常把Tomcat与其他HTTP服务器集成。对于不支持ServletJSP的HTTP服务器,可以通过Tomcat服务器来运行ServletJSP组件。

2019-08-23 06:36:32

HTTP协议安全相关header详解
当用户通过浏览器访问站点时,服务器使用HTTP响应头进行响应。这些header告诉浏览器如何与站点通信。它们包含了网站的metadata。您可以利用这些信息概括整个通信并提高安全性。本文将依次介绍HTTP协议安全相关header。

2019-04-02 08:36:12

面试突击:常见的 HTTP 状态有哪些?
HTTP状态码分为5大类:1XX:表示消息状态码;2XX:表示成功状态码;3XX:表示重定向状态码;4XX:表示客户端错误状态码;5XX:表示服务端错误状态码。其中常见的具体状态码有:200:请求成功;301:永久重定向;302:临时重定向;404:无法找到此页面;405:请求的方法类型不支持;500:服务器内部出错。

2022-06-01 12:00:54

HTTP 状态码 服务端
HTTP401错误与HTTP403错误–状态响应说明
之前我们已经详细介绍了403HTTP错误代码。那么401(未经授权)和403(禁止)状态代码之间到底有什么区别他们是同一回事吗让我们仔细看看!

2020-06-28 07:43:45

HTTP401 HTTP403 服务器
Google 提议为审查设立专门的HTTP状态
XML合作者、GoogleAndroid开发大使TimBray递交了新的HTTP状态码草案,应用于因法律限制而无法显示的网页。新的状态码为“451UnavailableforLegalReasons”

2012-06-13 10:30:02

HTTP 451 状态码
HTTP 中的常用状态及使用场景
作为前端,经常需要从后端获取数据,所以对HTTP的掌握也是很重要的。其中HTTP状态码则代表了当前请求的状态,比如客户端还是服务端错误之类的,也是考的比较多的点

2022-07-29 07:48:15

HTTP 常用状态码
聊聊HTTP状态完整指南,你学会了吗?
当我们在浏览器输入URL并按下Enter键时,浏览器就会向站点的服务器发送一个HTTP请求,服务器接收并处理请求,然后将相关资源和HTTP标头一起返回。

2022-10-11 08:48:08

HTTP 状态码 浏览器
一篇带给你HTTP协议详解
HTTP是一个基于TCPIP通信协议来传递数据(HTML文件,图片文件,查询结果等

2021-04-14 14:16:58

Http Http协议 网络协议
详解iPhone应用中HTTP上传请求协议
本文介绍的是详解iPhone应用中HTTP上传请求协议,很详细的介绍了文中提到的http协议应该注意四点,来实现请求协议,来看详细内容。

2011-08-09 14:08:51

iPhone HTTP 请求协议
如何理解HTTP协议的“无连接,无状态”特点?
是一个属于应用层的面向对象的协议,HTTP协议一共有五大特点:1、支持客户服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态。

2015-03-25 11:47:57

HTTP协议 Session Cookie
一文概览10个常见的HTTP状态
HTTP状态码是用以表示网页服务器HTTP响应状态的3位数字代码。所有状态码的第一个数字代表了响应的五种状态之一。

2019-09-17 08:18:19

HTTP 网络协议 状态码
基础阐述SIP协议详解
下面我们通过四个方面来进行SIP协议详解。包括:SIP协议的背景和功能、SIP网络元素、SIP协议的实现机制、SIP消息的组成四个方面。

2010-09-17 14:24:00

SIP协议详解
C#网络编程系列二:HTTP协议详解
我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务器发送一个HTTP请求,此时就使用了应用层的HTTP协议,在上一个专题我们简单介绍了网络协议的知识,主要是为了后面讲HTTP协议做一个铺垫的

2012-09-24 14:09:31

C# 网络协议 C
http协议http代理
TCPIP是用于计算机通信的一个协议族。TCPIP协议族包括诸如Internet协议、地址解析协议、互联网控制信息协议、用户数据报协议、传输控制协议、路由信息协议、Telnet、简单邮件传输协议、域名系统等协议。

2014-10-22 09:36:41

TCP IP
ASP.NET中利用HTTP报头状态实现SEO
本文将介绍ASP.NET在SEO方面的实现,主要是关于HTTP报头状态码以及内容重定向。希望本文能对大家有所帮助。

2010-02-24 08:59:50

HTTP报头状态码
HTTP 新增的 103 状态,这次终于派上用场了!
说到HTTP的103状态码,你可能很早就听说过了,但是你不一定真的理解了它。今天我们就来看一下,HTTP103状态码究竟有什么用途。

2022-06-27 09:15:11

HTTP HTTP 103 状态码
HTTP协议入门
HTTP协议是互联网的基础协议,也是网页开发的必备知识,最新版本HTTP2更是让它成为技术热点。本文介绍HTTP协议的历史演变和设计思路。

2017-05-26 10:35:13

前端 HTTP

聚圣源公司起名字寓意好的字两个字易姓男孩起名男洗洁精原料半是蜜糖半是伤免费观看全集完整版起名参考用字 按笔画转正申请书给合作社起取个名字男人起名别让玉鼎再收徒了理财工作室起什么名字好公司起名字大全免费装饰公司榛子怎么读给家具起名字的姐弟恋言情小说魔兽下载大学什么时候开学月租房小宝宝如何起名字鲍叔牙与管仲典故节哀顺变什么意思力克胡哲睿字起姓名大全起名字大全男孩缺水400电话怎么收费qq空间花藤代码票据打印软件男孩子双胎起名大全宝宝起名字木字旁的极光tv王姓男孩100分起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化