403 forbidden 操作被拒绝(403 forbidden)

导读 大家好,小晋来为大家解答以上问题,403 forbidden 操作被拒绝,403 forbidden很多人还不知道,现在让我们一起来看看吧!HTTP状态码的学

大家好,小晋来为大家解答以上问题,403 forbidden 操作被拒绝,403 forbidden很多人还不知道,现在让我们一起来看看吧!

HTTP状态码的学习资料随处可见,但都是理论讲解。本文介绍了HTTP协议中的HTTP状态码,并将结合详细的例子解释大部分的状态码。

要理解状态码,就要理解例子中状态码的意思,不然就忘了。

使用Fiddler工具,可以查看HTTP请求和响应,还可以方便地查看响应中的状态代码。

什么是HTTP状态码?

Web服务器使用HTTP状态代码告诉客户端发生了什么。

状态代码位于HTTP响应的第一行,它将返回一个“三位数的状态代码”和一个“状态消息”。三位状态码”便于程序处理,“状态信息”更容易让人理解。

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

州代码分类

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

提示:如果你看到一个状态码518,你不知道具体的518是什么意思。这个时候你只需要知道518属于(5XX,服务器错了)

范围分类1x100-101已定义。信息提示2x 200-206成功3XX300-305重定向4x 400-415客户端错误5XX500-505服务器错误。

的常见状态代码

一般来说,人们只需要知道以下几种常见的状态代码。如果你想知道更多,请继续阅读。

200 OK服务器成功处理请求(这是我们见过最多的一个)。301/302永久移动请求的URL已被删除。响应应该包含一个位置URL,指示资源的当前位置。304未修改。客户端的缓存资源是最新的,并且客户端需要使用未找到的缓存404。资源501内部服务器错误服务器遇到一个错误,这使得它无法处理该请求。1XX信息状态代码

这些状态代码是由HTTP 1.1引入的。关于这些状态码的价值还有争论(我个人没见过这些状态码,不了解。)

状态消息的含义:示例100继续:收到请求的初始部分后,客户端应继续请求101交换协议。服务器正在根据客户端的指令将协议切换到更新标头中列出的协议2XX成功状态代码。

当客户端发起请求时,这些请求通常是成功的。服务器有一组指示成功的状态代码,对应于不同类型的请求。

状态码状态消息含义示例200OK服务器成功处理请求(这是我们见过最多的一个)。HTTP协议的详细说明-2002 01已创建。对于那些请求服务器创建对象的请求,已经创建了资源。202Accepted请求已被接受,但服务器尚未处理203非权威信息服务器已成功处理事务,只是实体头中包含的信息不是来自原服务器,而是来自资源的副本。204无内容(无内容)响应包含一些标题和一个状态行,但不包括实体的主题内容(无响应正文)。状态代码204205重置内容(Reset Content)是另一个主要用于浏览器的代码。这意味着浏览器应该重置当前页面上的所有HTML表单。206部分内容部分请求成功状态代码2063XX重定向状态代码

重定向状态代码用于告诉浏览器客户端它们访问的资源已经被移动,并且Web服务器发送重定向状态代码和可选的位置报头来告诉客户端新的资源地址在哪里。

浏览器将自动使用Location中提供的地址重新发送新请求。这个过程对用户是透明的。

01和302很像,一个是永久转,一个是临时转。(在我们看来,两者没有太大区别)

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

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

状态代码状态消息表示实例300客户端请求了多个选项

4XX客户端错误状态码

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

5XX服务器错误状态码

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

204 No Content(没有内容)

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

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

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

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

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

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

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

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了

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, 如下图。

本文到此结束,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!