HTTP常见异常状态码

HTTP状态码用于表示服务器对HTTP请求的响应。以下是常见的HTTP异常状态码及其详解:

一、1xx:信息性状态码

  • 100 Continue:服务器已接收到请求的一部分,并且客户端应继续发送请求的其余部分。
  • 101 Switching Protocols:服务器正在根据客户端的请求切换协议。例如,在WebSocket握手过程中,服务器会返回此状态码以确认协议切换。
  • 102 Processing(WebDAV):服务器已接受并正在处理请求,但尚无响应可用。这通常用于WebDAV(基于HTTP的分布式创作和版本控制)协议中。

二、2xx:成功状态码

虽然2xx状态码表示请求已成功处理和接受,但某些情况下也可能被视为异常,如:

  • 204 No Content:服务器成功处理了请求,但没有返回任何内容。这通常用于DELETE请求,表示资源已被成功删除,但无需返回任何响应体。

三、3xx:重定向状态码

  • 301 Moved Permanently:被请求的资源已经永久移动到新的位置。客户端应使用新的URI进行后续请求。
  • 302 Found:被请求的资源暂时移动到新的位置。这通常用于临时重定向,如用户登录后的页面跳转。
  • 304 Not Modified:自上次请求后,请求的网页未被修改过。客户端可以继续使用缓存的资源。

重定向状态码本身并不一定是异常,但如果重定向链不正确或导致无限重定向,则可能被视为问题。

四、4xx:客户端错误状态码

  • 400 Bad Request:服务器无法理解客户端的请求。这通常是由于请求格式错误、参数不正确或请求体过大导致的。
  • 401 Unauthorized:请求要求进行身份验证。客户端需要提供有效的身份凭证才能访问资源。
  • 403 Forbidden:服务器拒绝了请求,即使身份验证已成功。这通常是因为客户端没有足够的权限访问该资源。
  • 404 Not Found:服务器无法找到请求的资源。这通常是由于URL路径错误、资源不存在或权限不足导致的。
  • 405 Method Not Allowed:禁用请求中指定的方法。例如,当客户端尝试使用POST方法访问一个只允许GET方法的资源时,服务器会返回此状态码。
  • 406 Not Acceptable:无法使用请求的内容特性响应请求的网页。这通常是由于客户端请求的媒体类型不被服务器支持导致的。
  • 408 Request Timeout:服务器等候请求时发生超时。这通常是由于客户端发送请求后长时间未收到响应导致的。
  • 413 Payload Too Large:请求实体过大。这通常是由于客户端尝试上传的文件或数据超过了服务器允许的最大大小导致的。
  • 414 Request-URI Too Long:请求的URI过长。这通常是由于URL路径或查询参数过长导致的。
  • 415 Unsupported Media Type:请求的格式不受请求页面的支持。这通常是由于客户端发送的请求体格式不被服务器支持导致的。

五、5xx:服务器错误状态码

  • 500 Internal Server Error:服务器遇到错误,无法完成请求。这通常是由于服务器内部程序错误、数据库问题或配置错误导致的。
  • 501 Not Implemented:服务器不具备完成请求的功能。例如,当客户端请求一个服务器不支持的HTTP方法时,服务器会返回此状态码。
  • 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到无效响应。这通常是由于上游服务器故障或网络问题导致的。
  • 503 Service Unavailable:服务器当前无法处理请求,通常是因为过载或维护。这通常是一个临时状态,客户端可以在稍后重试请求。
  • 504 Gateway Timeout:服务器作为网关或代理,但没有及时从上游服务器收到请求。这通常是由于上游服务器响应超时导致的。

六、特殊状态码

  • 418 I'm a teapot(RFC 2324, April Fools' jokes):这是一个非官方的、仅用于娱乐的状态码。它表示服务器拒绝尝试用咖啡壶煮咖啡。虽然这不是一个真正的错误状态码,但它被包含在RFC 2324文档中作为一个愚人节笑话。
相关推荐
小阿宁的猫猫5 小时前
CSRF漏洞的原理、防御和比赛中的运用
安全·http·xss·csrf
教练、我想打篮球10 小时前
120 同样的 url, header, 参数, 使用 OkHttp 能够成功获取数据, 使用 RestTemplate 报错
http·okhttp·resttemplate·accept
zfj32110 小时前
websocket为什么需要在tcp连接成功后先发送一个标准的http请求,然后在当前tcp连接上升级协议成websocket
websocket·tcp/ip·http
杀手不太冷!10 小时前
Jenkins的安装与使用;git clone url的时候,url为http和ssh时候的区别
git·http·jenkins
irisart12 小时前
第二章【NGINX 开源功能】—— HTTP 服务器(下)
nginx·http·开源
Neolnfra1 天前
渗透测试标准化流程
开发语言·安全·web安全·http·网络安全·https·系统安全
fiveym1 天前
Apache HTTP 服务搭建全攻略
网络协议·http·apache
2501_915106321 天前
HTTP 协议详解,HTTP 协议在真实运行环境中的表现差异
网络·网络协议·http·ios·小程序·uni-app·iphone
GanGuaGua1 天前
计算机网络:HTTP报文
网络·网络协议·计算机网络·http
YY&DS1 天前
《Qt 手写 HTTP 登录服务实战》
开发语言·qt·http