HTTP 常见状态码总结

HTTP 状态码是服务器用来告知客户端网页或资源的请求是否成功以及失败的原因。状态码由三位数字组成,根据其首位数字,可以分为五个类别。

常见的HTTP状态码

主要有以下 5 响应类别的状态码

  • 1xx - 信息响应:请求已被接受,需要继续处理
  • 2xx - 成功:请求已成功被服务器接收、理解并接受
  • 3xx - 重定向:需要后续操作以完成请求
  • 4xx - 客户端错误:请求含有语法错误或无法被执行
  • 5xx - 服务器错误:服务器在处理请求的过程中出现了错误

成功(2xx)

  • 200 OK:请求成功。一般用于GET与POST请求。
  • 201 Created:请求被实现,新的资源被创建。
  • 204 No Content:服务器成功处理,但未返回内容。

重定向(3xx)

  • 301 Moved Permanently:请求的页面已永久移至新位置,表示资源已被分配了新的 URL。
  • 302 Found:请求的页面已临时移动到新的位置,表示资源临时被分配了新的 URL。
  • 303 See Other:表示资源存在着另一个 URL,应使用 GET 方法定向获取请求的资源。
  • 304 Not Modified:自从上次请求后,请求的网页未修改过。
  • 307 Temporary Redirect:临时重定向,和 302 Found 有着相同的含义

客户端错误(4xx)

  • 400 Bad Request:服务器不理解请求的语法。
  • 401 Unauthorized:请求要求用户的身份认证。
  • 403 Forbidden:服务器理解请求客户端的请求,但是拒绝执行此请求。
  • 404 Not Found:服务器无法根据客户端的请求找到资源。

服务器错误(5xx)

  • 500 Internal Server Error:服务器内部错误,无法完成请求。
  • 503 Service Unavailable:服务器目前无法使用(超载或停机维护)。

状态码 301、302、307 区别与联系

301 Moved Permanently

  • 用途: 当资源的URL已经改变,并且将来对该资源的所有访问都应使用新的URL时,服务器返回301状态码。301重定向通知客户端(以及搜索引擎)资源已移动到了新的位置,并且这个改变是永久性的。

  • 特性: 浏览器会缓存这种重定向,下次直接访问新的URL,而不再访问原始URL。这种重定向对SEO(搜索引擎优化)也是有影响的,搜索引擎会更新索引到新的URL。

  • 请求方法: 当处理301重定向时,方法应该从POST变为GET

302 Found

  • 用途: 当服务器需要客户端重定向到新的URL,但只是临时性的,未来不保证资源一直位于那个新的位置时,使用302状态码。以前这个状态码描述为”Moved Temporarily”(临时移动)。

  • 特性: 浏览器不会缓存302重定向,用户每次请求原始URL时,服务器都可能返回不同的重定向地址。

  • 请求方法: 根据HTTP规范,302状态码建议客户端保持请求方法不变进行重定向。然而,实际上大多数浏览器会在处理302重定向时将POST请求改变成GET请求,这个行为更接近303状态码。

307 Temporary Redirect

  • 用途: 类似于302,但307保证客户端重定向到新的URL时使用与原始请求相同的请求方法。当服务器需要客户端以一个新的URL重新发起相同的请求时,会使用307状态码。

  • 特性: 浏览器也不会缓存307重定向,用户每次请求原始URL时,服务器都会返回临时重定向到的地址。

  • 请求方法307规范要求客户端必须使用原有的请求方法进行重定向,这意味着如果原始请求是POST,重定向的请求也必须使用POST方法,保持请求的完整性。

总结区别

  • 301用于永久重定向,它告诉客户端以及搜索引擎资源永久地移动到了新的URL。会有请求方法的变更,并且影响搜索引擎索引。
  • 302最初被设计为临时重定向状态码,但在实际处理中通常会被浏览器当作303来处理,使得POST请求变为GET请求。
  • 307是为了纠正原有302状态码的混乱而引入的,保证请求方法在重定向时不会改变,确切保持原请求所使用的方法。

> cd ..