HTTP响应码

常见状态码

  • 一些常见HTTP状态码为: 200 – 服务器成功返回网页
    404 – 请求的网页不存在
    503 – 服务不可用

表示临时响应并需要请求者继续执行操作的状态代码。

http状态码 说明
100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

表示成功处理了请求的状态代码。

http状态码 说明
200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201 (已创建) 请求成功并且服务器创建了新的资源。
202 (已接受) 服务器已接受请求,但尚未处理。
203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
206 (部分内容) 服务器成功处理了部分 GET 请求。

表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

代http状态码码 说明
300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
308 (永久转移)这个请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但是不允许HTTP方法改变。例如,请求表单到一个永久转移的资源将会继续顺利地执行。

这些状态代码表示请求可能出错,妨碍了服务器的处理。

http状态码 说明
400 (错误请求) 服务器不理解请求的语法。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
405 (方法禁用) 禁用请求中指定的方法。
406 (不接受) 无法使用请求的内容特性响应请求的网页。
407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408 (请求超时) 服务器等候请求时发生超时。
409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求。
418 (我是一个茶壶)这个代码是在1998年作为传统的IETF April Fools‘ jokes被定义的在RFC2324,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现。RFC指定了这个代码应该是由茶罐返回给速溶咖啡。
419 (认证超时)并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。
420 (方法失效)不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。这个状态码已经不推荐在Spring中使用。
420 (提高你的耐心)也不是HTTP标准的一部分,但是被版本1的Twitter搜索和趋势APi返回当客户端的速率被限制的时候。其它的服务提供商可能会使用429太多的请求响应码来代替。
421 从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常,这里的IP地址指的是从服务器上看到的客户端地址(比如用户的网关或者代理服务器地址)。在这种情况下,连接数的计算可能涉及到不止一个终端用户。
422 请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV)423 Locked当前资源被锁定。(RFC 4918 WebDAV)
424 由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV)
425 在WebDav Advanced Collections 草案中定义,但是未出现在《WebDAV 顺序集协议》(RFC 3658)中。
426 客户端应当切换到TLS/1.0。(RFC 2817)
428 (需要前置条件)原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突。
429 (过多请求)用户已经发送了太多的请求在指定的时间里。用于限制速率。
431 (请求头部字段太大)服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求。
440 (登陆超时(微软))一个微软的扩展,意味着你的会话已经超时。
444 (无响应)被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接(在威慑恶意软件的时候比较有用)。
449 (重试(微软))一个微软的扩展。请求应该在执行适当的动作之后被重试。
450 (被Windows家长控制阻塞(微软))一个微软的扩展。这个错误是当Windows家长控制打开并且阻塞指定网页的访问的时候被指定。
451 (由于法律原因而无效(因特网草稿))被定义在因特网草稿“一个新的HTTP状态码用于法律限制的资源”。被用于当资源的访问由于法律原因被禁止的时候。例如检查制度或者是政府强制要求禁止访问。一个例子是1953年dystopian的小说Fahrenheit 451就是一个非法的资源。
451 (重定向(微软))被用在Exchange ActiveSync中如果一个更有效的服务器能够被使用或者是服务器不能访问用户的邮箱。客户端会假定重新执行HTTP自动发现协议去寻找更适合的服务器。
494 (请求头太大(Nginx))Nginx内置代码和431类似,但是是被更早地引入在版本0.9.4(在2011年1月21日)。
495 (证书错误(Nginx))Nginx内置的代码,当使用SSL客户端证书的时候错误会出现为了在日志错误中区分它和4XX和一个错误页面的重定向。。
496 (没有证书(Nginx))Nginx内置的代码,当客户端不能提供证书在日志中分辨4XX和一个错误页面的重定向。
497 (HTTP到HTTPS(Nginx))Nginx内置的代码,被用于原始的HTTP的请求发送给HTTPS端口去分辨4XX在日志中和一个错误页面的重定向。
498 (令牌超时或失效(Esri))由ArcGIS for Server返回。这个代码意味着令牌的超时或者是失效。
499 (客户端关闭请求(Nginx))被用在Nginx日志去表明一个连接已经被客户端关闭当服务器仍然正在处理它的请求,是的服务器无法返货状态码。
499 (需要令牌(Esri))由ArcGIS for Server返回。意味着需要一个令牌(如果没有令牌被提交)。

这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

http状态码 说明 -
500 (服务器内部错误) 服务器遇到错误,无法完成请求。 原因1:伪静态规则不正确
解决办法:
修改伪静态。
原因2:php版本与网站程序不兼容
解决办法:
更换PHP版本。
原因3:网站无法连接至数据库
解决办法:
正确修改站点的数据库配置文件。
原因4:php禁用了某一函数,需要开启
解决办法:
开启相关禁用函数。
原因5:站点需要访问站外目录
解决办法:
关闭防跨站处理。
原因6:源码本身有BUG
解决办法:
修复源码bug。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。 原因1:DNS 缓冲
解决办法:
在dos窗口运行 ipconfig /flushdns,该命令会刷新DNS缓冲。
原因2:浏览器代理
解决办法:
关掉代理。
原因3:dns 被劫持了,即使使用国外的dns,也会被劫持
解决办法:
去掉VPN服务器的DNS。切换另外的dns。在windows系统中,
可以在本地网络连接的属性中,去掉默认的dns,选用国外的dns,比如google的或opendns。
原因4:php执行超时
解决办法:
修改/usr/local/php/etc/php.ini 将max_execution_time 改为300。
原因5:nginx等待时间超时
解决办法:
适当增加nginx.conf配置文件中FastCGI的timeout时间
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。一般为进程瞬时请求量过大,无法及时处理导致 原因1:服务不可用状态
解决办法:
服务器或许就是正在维护或者暂停了,你可以联系一下服务器空间商。
原因2:程序占用资源太多
解决办法:
通过设置应用程序池把账户改为NetworkService即可解决。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。一般为进程阻塞超时导致。 原因1:后端电脑之间 IP 通讯缓慢而产生
解决办法:
如果您的 Web 服务器由某一网站托管, 只有负责那个网站设置的人员才能解决这个问题。
原因2:由于nginx默认的fastcgi进程响应的缓冲区太小造成的错误
解决办法:
一般默认的fastcgi进程响应的缓冲区是8K,这时可以设置大一点,在nginx.conf里,加入:fastcgi_buffers 8 128k这表示设置fastcgi缓冲区为8块128k大小的空间。当然如果在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:send_timeout 60; 经过这两个参数的调整,一般不会再提示“504 Gateway Time-out”错误,问题基本解决。
原因3:PHP环境的配置问题
解决办法:
更改php-fpm的几处配置: 把max_children由之前的10改为现在的30,这样就可以保证有充足的php-cgi进程可以被使用; 把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程
处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率。 接着再更改nginx的几个配置项,减少FastCGI的请求次数,尽量维持buffers不变:
fastcgi_buffers由 4 64k 改为 2 256k; fastcgi_buffer_size 由 64k 改为 128K; fastcgi_busy_buffers_size 由 128K 改为 256K;
fastcgi_temp_file_write_size 由 128K 改为 256K。 重新加载php-fpm和nginx的配置,再次测试,如果没有出现“504 Gateway Time-out”错误,问题解决。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。 原因1:您的 Web 服务器不支持,或拒绝支持客户端(如您的浏览器)在发送给服务器的 HTTP 请求数据流中指定的 HTTP 协议版本
解决办法:
升级您的 Web 服务器软件。
原因2:http请求格式的错误
解决办法:
对照一下自己的代码,从打印的信息中终于找到问题所在。可能在请求后面多加了一个空格。http协议真是很严格了。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
506 由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
507 服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
509 服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。
510 获取资源所需要的策略并没有没满足。(RFC 2774)。
508 (发现环路)服务器发现了一个无限的循环档处理请求的时候。
511 (需要网络授权)客户端需要授权去火的网络的访问权限。一般用于代理交互中被用来进行网络的访问控制。
520 (未知错误)这个状态码也没有被指定在任何RFC中,并且只会被一些服务器返回,例如微软的Azure和CloudFlare服务器:”520错误。本质上是一个捕获全部的响应当原始服务器返回一些未知的或者一些不能被忍受或者被解释的(协议违反或者空响应)”。
598 (网络读取超时异常(未知))这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络读取超时在一个客户端之前的代理的后面。
599 (网络连接超时异常(未知))这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络连接超时在一个客户端之前的代理的后面