http协议之状态码
2010-08-03 16:00:00 阿炯

通过检查服务器头部信息可以知道其HTTP状态码。下面七个状态码(200|301|302|304|307|404|410)对于搜索引擎的内容抓取和收录来说非常重要,同样的对于SEO研究来说也很重要。必要时请确认你的URI可以返回适当的状态码,而不会被搜索引擎惩罚。

常见HTTP状态码
1. 200 OK
2. 301 Moved Permanently
3. 302 Found
4. 304 Not Modified
5. 307 Temporary Redirect
6. 400 Bad Request
7. 401 Unauthorized
8. 403 Forbidden
9. 404 Not Found
10. 410 Gone
11. 500 Internal Server Error
12. 501 Not Implemented


参考来源:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/100


100 Continue
HTTP 100 Continue 信息型状态响应码表示目前为止一切正常,客户端应该继续请求,如果已完成请求则忽略。为了让服务器检查请求的首部,客户端必须在发送请求实体前,在初始化请求中发送 Expect: 100-continue 首部并接收 100 Continue 响应状态码。

101 Switching Protocol
HTTP 101 Switching Protocol(协议切换)状态码表示服务器应客户端升级协议的请求(Upgrade (en-US)请求头)正在切换协议。服务器会发送一个Upgrade (en-US)响应头来表明其正在切换过去的协议。该过程在协议升级机制(Protocol upgrade mechanism)中详细描述。

200 OK
状态码 200 OK 表明请求已经成功。默认情况下状态码为 200 的响应可以被缓存。不同请求方式对于请求成功的意义如下:
GET: 已经取得资源,并将资源添加到响应的消息体中。
HEAD: 响应的消息体为头部信息。
POST: 响应的消息体中包含此次请求的结果。
TRACE: 响应的消息体中包含服务器接收到的请求信息。
PUT 和 DELETE 的请求成功通常并不是响应200 OK的状态码而是 204 No Content 表示无内容(或者 201 Created表示一个资源首次被创建成功)。

201 Created
在 HTTP 协议中,201 Created 是一个代表成功的应答状态码,表示请求已经被成功处理,并且创建了新的资源。新的资源在应答返回之前已经被创建。同时新增的资源会在应答消息体中返回,其地址或者是原始请求的路径,或者是 Location 首部的值。该状态码的常规使用场景是作为 POST 请求的返回值。

202 Accepted
响应状态码 202 Accepted 表示服务器端已经收到请求消息,但是尚未进行处理。但是对于请求的处理却是无保证的,即稍后无法通过 HTTP 协议给客户端发送一个异步请求来告知其请求的处理结果。这个状态码被设计用来将请求交由另外一个进程或者服务器来进行处理,或者是对请求进行批处理的情形。

203 Non-Authoritative Information
在 HTTP 协议中,响应状态码 203 Non-Authoritative Information 表示请求已经成功被响应,但是获得的负载与源头服务器的状态码为 200 (OK) 的响应相比,经过了拥有转换功能的 proxy(代理服务器)的修改。

204 No Content
HTTP 204 No Content 成功状态响应码,表示该请求已经成功了,但是客户端客户不需要离开当前页面。默认情况下 204 响应是可缓存的。一个 ETag 标头包含在此类响应中。

205 Reset Content
在 HTTP 协议中,响应状态码 205 Reset Content 用来通知客户端重置文档视图,比如清空表单内容、重置 canvas 状态或者刷新用户界面。

206 Partial Content
HTTP 206 Partial Content 成功状态响应代码表示请求已成功,并且主体包含所请求的数据区间,该数据区间是在请求的 Range 首部指定的。如果只包含一个数据区间,那么整个响应的 Content-Type 首部的值为所请求的文件的类型,同时包含 Content-Range 首部。如果包含多个数据区间,那么整个响应的 Content-Type 首部的值为 multipart/byteranges ,其中一个片段对应一个数据区间,并提供 Content-Range 和 Content-Type 描述信息。

300 Multiple Choices
客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。

301 Moved Permanently
HTTP 301 Moved Permanently 说明请求的资源已经被移动到了由 Location 头部指定的 url 上,是固定的不会再改变。搜索引擎会根据该响应修正。

备注: 尽管规范要求浏览器在收到该响应并进行重定向时不应该修改 http method 和 body,但并非所有的用户代理都符合此要求。所以最好将 301 状态码用作 GET 或 HEAD 方法的响应,而对于 POST 则改用 308 Permanent Redirect,因为此状态码会禁止更改请求方法。

302 Found
HTTP 302 Found 重定向状态码表明请求的资源被暂时的移动到了由该 HTTP 响应的响应头 Location 指定的 URL 上。浏览器会重定向到这个 URL,但是搜索引擎不会对该资源的链接进行更新 (In SEO-speak, it is said that the link-juice is not sent to the new URL)。

即使规范要求浏览器在重定向时保证请求方法和请求主体不变,但并不是所有的用户代理都会遵循这一点,你依然可以看到有缺陷的软件的存在。所以推荐仅在响应 GET 或 HEAD 方法时采用 302 状态码,而在其他时候使用 307 Temporary Redirect 来替代,因为在这些场景下方法变换是明确禁止的。在确实需要将重定向请求的方法转换为 GET的场景下,可以使用 303 See Other。例如在使用 PUT 方法进行文件上传操作时,需要返回确认信息(例如“你已经成功上传了 xyz”)而不是上传的资源本身,就可以使用这个状态码。

303 See Other
HTTP 303 See Other 重定向状态码,通常作为 PUT 或 POST 操作的返回结果,它表示重定向链接指向的不是新上传的资源,而是另外一个页面,比如消息确认页面或上传进度页面。类似于301/302,而请求重定向页面的方法要总是使用 GET。

304 Not Modified
HTTP 304 Not Modified 说明无需再次传输请求的内容,也就是说可以使用缓存的内容。这通常是在一些安全的方法(safe),例如GET 或HEAD 或在请求中附带了头部信息: If-None-Match 或If-Modified-Since。如果是 200 OK ,响应会带有头部 Cache-Control, Content-Location, Date, ETag, Expires,和 Vary。

305 Use Proxy
客户请求的文档应该通过Location头所指明的代理服务器提取

307 Temporary Redirect
HTTP 307 Temporary Redirect,临时重定向响应状态码,表示请求的资源暂时地被移动到了响应的 Location 首部所指向的 URL 上。原始请求中的请求方法和消息主体会在重定向请求中被重用。在确实需要将重定向请求的方法转换为 GET 的场景下,可以考虑使用 303 See Other 状态码。例如,在使用 PUT 方法进行文件上传操作时,如果需要返回一条确认信息(例如“你已经成功上传了 XYZ”),而不是返回上传的资源本身,就可以使用这个状态码。

状态码 307 与 302 之间的唯一区别在于,当发送重定向请求的时候,307 状态码可以确保请求方法和消息主体不会发生变化。如果使用 302 响应状态码,一些旧客户端会错误地将请求方法转换为 GET:也就是说,在 Web 中,如果使用了 GET 以外的请求方法,且返回了 302 状态码,则重定向后的请求方法是不可预测的;但如果使用 307 状态码,之后的请求方法就是可预测的。对于 GET 请求来说,两种情况没有区别。

308 Permanent Redirect
在 HTTP 协议中, 308 Permanent Redirect(永久重定向)是表示重定向的响应状态码,说明请求的资源已经被永久的移动到了由 Location 首部指定的 URL 上。浏览器会进行重定向,同时搜索引擎也会更新其链接(用 SEO 的行话来说,意思是“链接汁”(link juice)被传递到了新的 URL)。在重定向过程中,请求方法和消息主体不会发生改变,然而在返回 301 状态码的情况下,请求方法有时候会被客户端错误地修改为 GET 方法。

400 Bad Request

超文本传输协议(HTTP)400 Bad Request 响应状态码表示服务器因某些被认为是客户端错误的原因(例如,请求语法错误、无效请求消息格式或者欺骗性请求路由),而无法或不会处理该请求。

警告:客户端不应该在未进行修改的情况下重复发送此请求。

401 Unauthorized
状态码 401 Unauthorized 代表客户端错误,指的是由于缺乏目标资源要求的身份验证凭证,发送的请求未得到满足。这个状态码会与 WWW-Authenticate 首部一起发送,其中包含有如何进行验证的信息;然后在填写合适的Authorization头后再次发出请求。类似于 403,但是在该情况下,依然可以进行身份验证。

402 Payment Required
实验性: 这是一项实验性技术 在将其用于生产之前,请仔细检查浏览器兼容性表格。是一个被保留使用的非标准客户端错误状态响应码。有时该状态码表明直到客户端付费之后请求才会被处理。402 状态码被创建最初目的是用于数字现金或微型支付系统,表明客户端请求的内容只有付费之后才能获取。目前还不存在标准的使用约定,不同的实体可以在不同的环境下使用。

403 Forbidden
状态码 403 Forbidden 代表客户端错误,指的是服务器端有能力处理该请求,但是拒绝授权访问。这个状态类似于 401,但进入 403状态后即使重新验证也不会改变该状态。该访问是长期禁止的,并且与应用逻辑密切相关(例如没有足够的权限访问该资源)。

404 Not Found
HTTP 响应状态码 404 Not Found 指的是服务器无法找到所请求的资源。返回该响应的链接通常称为坏链(broken link)或死链(dead link),它们会导向链接出错处理(link rot)页面。404 状态码并不能说明请求的资源是临时还是永久丢失。如果服务器知道该资源是永久丢失,那么应该返回 410(Gone)而不是 404。

405 Method Not Allowed
状态码 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求,请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。

406 Not Acceptable
HTTP 协议中的 406 Not Acceptable 状态码表示客户端错误,指代服务器端无法提供与 Accept-Charset 以及 Accept-Language 消息头指定的值相匹配的响应。主动内容协商标头包括:
Accept
Accept-Encoding
Accept-Language

实际上,这种错误极少使用。服务器不应使用此错误代码响应,因为它对终端用户来说很难理解和修复,而是忽略相关的标头并向用户提供实际页面。假设即使用户不完全满意,他们也会更喜欢这种情况,而不是错误代码。如果服务器返回了这个错误状态码,那么消息体中应该包含所能提供的资源表现形式的列表,允许用户手动进行选择。

407 Proxy Authentication Required

状态码 407 代表客户端错误,指的是由于缺乏位于浏览器与可以访问所请求资源的服务器之间的代理服务器(proxy server )要求的身份验证凭证,发送的请求尚未得到满足。这个状态码会与 Proxy-Authenticate 首部一起发送,其中包含有如何进行验证的信息。

408 Request Timeout
响应状态码 408 表示服务器想要将没有在使用的连接关闭。一些服务器会在空闲连接上发送此信息,即便是在客户端没有发送任何请求的情况下。

服务器应该在此类响应中将 Connection 首部的值设置为 "close",因为 408 意味着服务器已经决定将连接关闭,而不是继续等待。这类响应出现的比较频繁,源于一些浏览器——例如 Chrome, Firefox 27+, 或者 IE9 等——使用 HTTP 协议中的预连接机制来加速上网体验。同时应该注意到,某些服务器会直接关闭连接,而不发送此类消息。

409 Conflict
响应状态码 409 表示请求与服务器端目标资源的当前状态相冲突。冲突最有可能发生在对 PUT 请求的响应中。例如,当上传文件的版本比服务器上已存在的要旧,从而导致版本冲突的时候,那么就有可能收到状态码为 409 的响应。

410 Gone
HTTP 410 Gone 说明请求的目标资源在原服务器上不存在了,并且是永久性的丢失。如果不清楚是否为永久或临时的丢失,应该使用404。和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。

411 Length Required
响应状态码 411 属于客户端错误,表示由于缺少确定的Content-Length 首部字段,服务器拒绝客户端的请求。

注意,按照规范,当使用分块模式传输数据的时候, Content-Length 首部是不存在的,但是需要在每一个分块的开始添加该分块的长度,用十六进制数字表示。参见 Transfer-Encoding 获取更多细节信息。

412 Precondition Failed
响应状态码 412 Precondition Failed(先决条件失败)表示客户端错误,意味着对于目标资源的访问请求被拒绝。这通常发生于采用除 GET 和 HEAD 之外的方法进行条件请求时,由首部字段 If-Unmodified-Since 或 If-None-Match 规定的先决条件不成立的情况下。这时候,请求的操作——通常是上传或修改文件——无法执行,从而返回该错误状态码。

413 Content Too Large
HTTP 响应状态码 413 Content Too Large 表示请求主体的大小超过了服务器愿意或有能力处理的限度,服务器可能会关闭连接或返回 Retry-After 标头字段。在 RFC 9110 标准之前,该响应的短语为 Payload Too Large,它仍在被广泛使用。

414 URI Too Long
响应码 414 URI Too Long 表示客户端所请求的 URI 超过了服务器允许的范围。以下是造成这种罕见情况的几种可能原因:
当客户端误将 POST 请求当作 GET 请求时,会带有一个较长的查询字符串 (query);
当客户端堕入重定向循环黑洞时,例如,指向自身后缀的重定向 URI 前缀 (a redirected URI prefix that points to a suffix of itself);
当客户端对服务器进行攻击,试图寻找潜在的漏洞时。

416 Requested Range Not Satisfiable
服务器不能满足客户在请求中指定的Range头。

429 Too Many Requests
响应状态码 429 Too Many Requests 表示在一定的时间内用户发送了太多的请求,即超出了“频次限制”。在响应中,可以提供一个 Retry-After 首部来提示用户需要等待多长时间之后再发送新的请求。

500 Internal Server Error
响应状态码 500 是表示服务器端错误的响应状态码,意味着所请求的服务器遇到意外的情况并阻止其执行请求。这个错误代码是一个通用的“万能”响应代码。有时候,对于类似于 500 这样的错误,服务器管理员会更加详细地记录相关的请求信息来防止以后同样错误的出现。

501 Not Implemented
HTTP 501 Not Implemented 服务器错误响应码表示请求的方法不被服务器支持,因此无法被处理。服务器必须支持的方法(即不会返回这个状态码的方法)只有 GET 和 HEAD。

请注意,你无法修复 501 错误,需要被访问的 web 服务器去修复该问题。

502 Bad Gateway
响应状态码 502 是一种 HTTP 协议的服务端错误状态代码,它表示作为网关或代理的服务器,从上游服务器中接收到的响应是无效的。

备注: 网关在计算机网络体系中可以指代不同的设备,502 错误通常不是客户端能够修复的,而是需要由途经的 Web 服务器或者代理服务器对其进行修复。

503 Service Unavailable
响应状态码 503 是一种 HTTP 协议的服务器端错误状态代码,它表示服务器尚未处于可以接受请求的状态。

通常造成这种情况的原因是由于服务器停机维护或者已超载。注意在发送该响应的时候,应该同时发送一个对用户友好的页面来解释问题发生的原因。该种响应应该用于临时状况下,与之同时,在可行的情况下,应该在 Retry-After 首部字段中包含服务恢复的预期时间。缓存相关的首部在与该响应一同发送时应该小心使用,因为 503 状态码通常应用于临时状况下,而此类响应一般不应该进行缓存。

504 Gateway Timeout
响应状态码 504 是一种 HTTP 协议的服务器端错误状态代码,表示扮演网关或者代理的服务器无法在规定的时间内获得想要的响应。Gateway(网关)在计算机网络体系中可以指代不同的设备,504 错误通常不是在客户端可以修复的,而是需要由途径的 Web 服务器或者代理服务器对其进行修复。

505 HTTP Version Not Supported
响应状态码 505 是一种 HTTP 协议的服务器端错误状态代码,表示服务器不支持请求所使用的 HTTP 版本。

507 Insufficient Storage
HTTP 协议的 507 响应状态码 可以在 WebDAV 协议(基于 web 的分布式创作和版本控制,参见 RFC 4918)中给出。该码表示服务器不能存储相关内容。准确地说,一个方法可能没有被执行,因为服务器不能存储其表达形式,这里的表达形式指:方法所附带的数据,而且其请求必需已经发送成功。



细说http 301和302

官方的比较简洁的说明:

301 redirect: 301 代表永久性转移(Permanently Moved)

302 redirect: 302 代表暂时性转移(Temporarily Moved )

详细来说,301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。他们的不同在于:301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。

1、什么是重定向

就是地址A跳转到地址B啦。百度百科的解释:重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。

2、为什么要进行重定向啊,什么时候需要重定向呢?

1)网站调整(如改变网页目录结构);
2)网页被移到一个新地址;
3)网站做了伪静态(如应用需要把.php改成.Html或.shtml)。

这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

3、那么什么时候进行301或者302跳转呢?

当一个网站或者网页24—48小时内临时移动到一个新的位置,这时候就要进行302跳转,打个比方说,我有一套房子,但是最近走亲戚去亲戚家住了,过两天我还回来的。而使用301跳转的场景就是之前的网站因为某种原因需要移除掉,然后要到新的地址访问,是永久性的,就比如你的那套房子其实是租的,现在租期到了,你又在另一个地方找到了房子,之前租的房子不住了。

清晰明确而言:
使用301跳转的场景:
1)域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
2)在搜索引擎的搜索结果中出现了不带www的域名,而带www的域名却没有收录,这个时候可以用301重定向来告诉搜索引擎我们目标的域名是哪一个。
3)空间服务器不稳定,换空间的时候。

使用302跳转的场景:尽量使用301跳转!

4、为什么尽量要使用301跳转?——网址劫持!

这里摘录百度百科上的解释:从网址A 做一个302 重定向到网址B 时,主机服务器的隐含意思是网址A 随时有可能改主意,重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下,当收到302 重定向时,一般只要去抓取目标网址就可以了,也就是说网址B。如果搜索引擎在遇到302 转向时,百分之百的都抓取目标网址B 的话,就不用担心网址URL 劫持了。问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。比如说,有的时候A 网址很短,但是它做了一个302 重定向到B 网址,而B 网址是一个很长的乱七八糟的URL 网址,甚至还有可能包含一些问号之类的参数。很自然的,A 网址更加用户友好,而B 网址既难看,又不用户友好。这时Google 很有可能会仍然显示网址A。由于搜索引擎排名算法只是程序而不是人,在遇到302 重定向的时候,并不能像人一样的去准确判定哪一个网址更适当,这就造成了网址URL 劫持的可能性。也就是说,一个不道德的人在他自己的网址A 做一个302 重定向到你的网址B,出于某种原因, Google 搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B 上的内容,这种情况就叫做网址URL 劫持。你辛辛苦苦所写的内容就这样被别人偷走了。302 重定向所造成的网址URL 劫持现象,已经存在一段时间了。不过到目前为止,似乎也没有什么更好的解决方法。在正在进行的谷歌大爸爸数据中心转换中,302 重定向问题也是要被解决的目标之一。从一些搜索结果来看,网址劫持现象有所改善,但是并没有完全解决。

从网站A(网站比较烂)上做了一个302跳转到网站B(搜索排名很靠前),这时候有时搜索引擎会使用网站B的内容,但却收录了网站A的地址,这样在不知不觉间,网站B在为网站A作贡献,网站A的排名就靠前了。

301跳转对查找引擎是一种友好的跳转处理,它告诉查找引擎,这个地址弃用了,永远转向一个新地址,可以转移新域名的权重。而302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。


状态响应码

状态响应码100 (Continue) 状态代码的使用,允许客户端在发request消息body之前先 用request header试探一下server,看server要不要接收request body,再决定要不要发request body。

客户端在Request头部中包含
Expect: 100-continue
Server看到之后呢如果回100 (Continue) 这个状态代码,客户端就继续发request body。这个是HTTP1.1才有的。

另外在HTTP/1.1中还增加了101、203、205等等性状态响应码

请求方式

HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT这些Request方法.
Method = "OPTIONS"; Section 9.2
    | "GET"; Section 9.3
    | "HEAD"; Section 9.4
    | "POST"; Section 9.5
    | "PUT"; Section 9.6
    | "DELETE"; Section 9.7
    | "TRACE"; Section 9.8
    | "CONNECT"; Section 9.9
    | extension-method

extension-method = token

HTTP响应消息

响应消息格式

HTTP响应消息的格式如下所示:
状态行
通用信息头|响应头|实体头
CRLF
实体内容

其中:状态行 = 版本号 [空格] 状态码 [空格] 原因 [回车换行]

1**:请求收到,继续处理
100--客户必须继续发出请求
101--客户要求服务器根据请求转换HTTP协议版本

2**:操作成功收到,分析、接受
200--交易成功
201--提示知道新文件的URL
202--接受和处理、但处理未完成
203--返回信息不确定或不完整
204--请求收到,但返回信息为空
205--服务器完成了请求,用户代理必须复位当前已经浏览 过的文件
206--服务器已经完成了部分用户的GET请求

3**:完成此请求必须进一步 处理
300--请求的资源可在多处得到
301--删除请求数据
302--在其他地址发现了请求数据
303--建议客户访问其他URL或访问方式
304--客户端已经执行了GET,但文件未变化
305--请求的资源必须从服务器指定的地址得到
306--前一版本HTTP中使用的代码,现行版本中不再使用
307--申明请求的资源临时性删除

4**:请求包含一个错误语法 或不能完成
400--错误请求,如语法错误
401--未授权
HTTP 401.1 - 未授权:登录失败
    HTTP 401.2 - 未授权:服务器配置问题导致登录失败
    HTTP 401.3 - ACL 禁止访问资源
    HTTP 401.4 - 未授权:授权被筛选器拒绝
    HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败
402--保留有效ChargeTo头响应
403--禁止访问
    HTTP 403.1 禁止访问:禁止可执行访问
    HTTP 403.2 - 禁止访问:禁止读访问
    HTTP 403.3 - 禁止访问:禁止写访问
    HTTP 403.4 - 禁止访问:要求 SSL
    HTTP 403.5 - 禁止访问:要求 SSL 128
    HTTP 403.6 - 禁止访问:IP 地址被拒绝
    HTTP 403.7 - 禁止访问:要求客户证书
    HTTP 403.8 - 禁止访问:禁止站点访问
    HTTP 403.9 - 禁止访问:连接的用户过多
    HTTP 403.10 - 禁止访问:配置无效
    HTTP 403.11 - 禁止访问:密码更改
    HTTP 403.12 - 禁止访问:映射器拒绝访问
    HTTP 403.13 - 禁止访问:客户证书已被吊销
    HTTP 403.15 - 禁止访问:客户访问许可过多
    HTTP 403.16 - 禁止访问:客户证书不可信或者无效
    HTTP 403.17 - 禁止访问:客户证书已经到期或 者尚未生效
404--没有发现文件、查询或URl
405--用户在Request-Line字段定义的方法不允许
406--根据用户发送的Accept拖,请求资源不可访问
407--类似401,用户必须首先在代理服务器上得到授权
408--客户端没有在用户指定的饿时间内完成请求
409--对当前资源状态,请求不能完成
410--服务器上不再有此资源且无进一步的参考地址
411--服务器拒绝用户定义的Content-Length属性请求
412--一个或多个请求头字段在当前请求中错误
413--请求的资源大于服务器允许的大小
414--请求的资源URL长于服务器允许的长度
415--请求资源不支持请求项目格式
416--请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417--服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。

5**:服务器执行一个完全有 效请求失败
HTTP 500 - 内部服务器错误
HTTP 500.100 - 内部服务器错误 - ASP 错误
HTTP 500-11 服务器关闭
HTTP 500-12 应用程序重新启动
HTTP 500-13 - 服务器太忙
HTTP 500-14 - 应用程序无效
HTTP 500-15 - 不允许请求
Error 501 - 未实现
HTTP 502 - 网关错误



下面对具体的错误码进行解析

HTTP 405 错误 – 方法不被允许 (Method not allowed)

HTTP 协议定义一些方法,以指明为获取客户端(如您的浏览器或我们的 CheckUpDown 机器人)所指定的具体网址资源而需要在 Web 服务器上执行的动作。则这些方法如下:
OPTIONS(选项) :查找适用于一个特定网址资源的通讯选择。 在不需执行具体的涉及数据传输的动作情况下, 允许客户端来确定与资源相关的选项以及/或者要求, 或是一个服务器的性能。
GET(获取) :检索由网址资源所确定的信息,如获取一个特定的网页或图片。这是最常用的方法。
HEAD(头) :除了服务器只反馈标头信息而不是网址资源所确定的信息本身外, 基本同于 GET (获取)。 可用于获取一个请求所要求的响应实体的元信息 (metainformation) ,而不需传输响应实体本身。 经常用来测试超文本链接的有效性, 可达性, 和最近的修改。
POST(投寄) :将数据提交到 Web 服务器,如:1)在电子公告板,新闻组中,或向 邮件名单发送信息, 2)提供输入数据 - 通常由一个公共网关接口(CGI) 表,到 一个数据处理进程,3)直接将记录添加到一个数据库中。
PUT(放置) :将一个具体网址的数据设置( 置入 / 替换)成客户提交的新数据。例如,将新的网页上载给服务器。
DELETE(删除) :删除与网址资源相关的数据。例如,删除网页。
TRACE(跟踪) :运行请求信息的一个远程应用层回送。 实际上是一个 'ping', 用以测试 Web 服务器正在从客户端接收什么数据。
CONNECT(连接) :保留以便通过代理服务器和隧道一起使用(如 SSL)。这种方法只在 HTTP 1.1 版中定义,而在先前的 1.0 版中却没有。

所有 Web 服务器都可以被设置为允许或不允许任何方法。例如,如果一个 Web 服务器是 '只读' (客户端不能修改 Web 服务器上的网址资源),那么它可以被设置为不允许 PUT 和 DELETE 方法。同样,如果没有用户输入(所有的网页都是静态的) ,那么 POST 方法可设置为不允许。 所以,405 错误可能会因 Web 服务器没有被设置为从客户端接受输入数据而出现。另外如果客户端对请求中指明的具体网址资源没有足够的权力,该错误也会出现。

解决 405 错误 – 一般方法

405 错误经常和 POST 方法同时出现。 您可能在您的网站上尝试引入某种输入表格,但并非所有的互联网服务供应商 (ISPs) 都 允许处理该表格所需的 POST 方法。
所有 405 错误都可以追综到 Web 服务器设置和控制访问网站内容的安全管理,因此您的 ISP 应该很容易地予以解释。