常见的http状态码

2022-02-15  本文已影响0人  前端小白的摸爬滚打

1xx

需要请求者继续执行操作的状态码

2xx

请求成功

3xx

重定向,完成请求需要进一步操作

301 和 302 应该是支持任意方法的重定向,但是浏览器都使用 get 方法重定向

301、302、303、307、308 的区别

301、308 都是永久重定向
302、303、307 都是临时重定向

302 Found

302 状态码表示目标资源临时移动到了另一个 URI 上。由于重定向是临时发生的,所以客户端在之后的请求中还应该使用原本的 URI。

服务器会在响应 Header 的 Location 字段中放上这个不同的 URI。浏览器可以使用 Location 中的 URI 进行自动重定向。

由于历史原因,用户代理可能会在重定向后的请求中把 POST 方法改为 GET 方法。如果不想这样,应该使用 307(Temporary Redirect) 状态码。

303 See Other

303 状态码表示服务器要将浏览器重定向到另一个资源,这个资源的 URI 会被写在响应 Header 的 Location 字段。从语义上讲,重定向到的资源并不是你所请求的资源,而是对你所请求资源的一些描述。

303 常用于将 POST 请求重定向到 GET 请求,比如你上传了一份个人信息,服务器发回一个 303 响应,将你导向一个“上传成功”页面。

不管原请求是什么方法,重定向请求的方法都是 GET(或 HEAD,不常用)

到这里你可能发现,303 和 302 的作用很类似,除去语义差别,似乎是 302 包含了 303 的情况。

307 Temporary Redirect

307 的定义实际上和 302 是一致的,唯一的区别在于,307 状态码不允许浏览器将原本为 POST 的请求重定向到 GET 请求上。

总结

302 允许各种情况的重定向,一般情况下会实现为到 GET 的重定向,但是不能确保 POST 会重定向为 POST;303 会允许任意请求到 GET 的重定向;307 和 302 一样,但是不允许 GET 到 POST 的重定向

301 和 308

301 Moved Permanently

301 状态码表明目标资源被永久的移动到了一个新的 URI,任何未来对这个资源的引用都应该使用新的 URI。

308 Permanent Redirect

308 的定义实际上和 301 是一致的,唯一的区别在于,308 状态码不允许浏览器将原本为 POST 的请求重定向到 GET 请求上。

4xx

客户端错误

5xx

服务器错误

上一篇 下一篇

猜你喜欢

热点阅读