在我们日常 Web 开发中,或多或少的都接触过 HTTP 状态码,那这些状态码代表什么意思呢?熟悉这些状态码又有什么好处呢?下面我就为大家一一道来,可以把本片文章‘收藏’以备不时之需。
HTTP 状态码(英语:HTTP Status Code )是用以表示 HTTP 响应状态的 3 位数字代码。比如:
熟记这些状态码可以让我们在快速定位 Web 开发中遇到的问题、编写符合规范的接口服务,那么下面就让我们看看这些死板的 3 位数字都是什么意思。撸猫爱好者,请注意:前方高能,屏住呼吸,一大波喵星人即将来袭!
这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,表示客户应该采取的其它行动。
服务器已经接收到请求头,请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
服务器已经理解了客户端的请求,并将通过 Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应后,服务器将会切换到在 Upgrade 消息头中定义的那些协议。
只有在切换新的协议更好的进行通信。例如:切换到新的 HTTP 版本(如 HTTP/2 )比旧版本更有优势、或切换到一个实时且同步的协议(如 WebSocket )等
这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
已成功处理了请求。出现此状态码是表示正常状态。
请求成功并且服务器创建了新的资源。
服务器已接受请求,但尚未处理。
服务器成功处理了请求,但没有返回任何内容。
服务器成功处理了部分 GET 请求。
这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。 当且仅当后续的请求所使用的方法是 GET 或者 HEAD 时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。
客户端应当自动监测无限循环重定向(例如:A->A,或者 A->B->C->A ),因为这会导致服务器和客户端大量不必要的资源消耗。按照 HTTP/1.0 版规范的建议,浏览器不应自动访问超过 5 次的重定向。
针对请求,服务器可执行多种操作。服务器可根据请求者选择一项操作,或提供操作列表供请求者选择。
请求的资源已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
请求的资源临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在 Cache-Control 或 Expires 中进行了指定的情况下,这个响应才是可缓存的。
对应当前请求的响应可以在另一个 URL 上被找到,而且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的 POST 请求输出重定向到一个新的资源。这个新的 URI 不是原始资源的替代引用。同时,303 响应禁止被缓存。当然,第二个请求(重定向)可能被缓存。
自从上次请求后,请求的资源未修改过。服务器返回此响应时,不会返回资源的内容,因此可节省带宽和开销。
请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来响应以后的请求。 此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉搜索引擎爬虫某个页面或网站已经移动,因为搜索引擎爬虫会继续抓取原有位置并编制索引。
这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
服务器不理解请求的语法。
请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
服务器拒绝请求。
服务器找不到请求的资源。 例如,对于服务器上不存在的资源经常会返回此代码。
请求中的方法不被允许( HTTP METHOD )。
请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体,该请求不可接受。
服务器等候请求时发生超时。
由于和被请求的资源的当前状态之间存在冲突,请求无法完成。
如果请求的资源已永久删除,服务器就会返回此响应。
服务器不接受不含有效内容长度标头字段的请求。
服务器未满足请求者在请求中设置的其中一个前提条件。
服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
请求的 URI (通常为网址)过长,服务器无法处理。
请求的格式不受请求页面的支持。
如果页面无法提供请求的范围,则服务器会返回此状态代码。
服务器未满足"Expect"请求头字段的要求。
用户在给定的时间内发送了太多的请求。旨在用于网络限速。
服务器不愿处理请求,因为一个或多个头字段过大。
这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
服务器遇到错误,无法完成请求。
服务器作为网关或代理,从上游服务器收到无效响应。
服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
服务器作为网关或代理,但是没有及时从上游服务器收到请求。
文中的图片整理自 https://http.cat/ ,内容整理自“维基百科 HTTP 状态码”
欢迎留言写出你家喵星人的品种和你对他的“爱称”,我很好奇有没有给自己家猫起名叫 “ 404 ” 的小伙伴 😂
欢迎关注 HelloGitHub 公众号
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.