http状态码301、302、303、307、308区别

这篇具有很好参考价值的文章主要介绍了http状态码301、302、303、307、308区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3xx开头的状态码都表示重定向。
先说明一些版本问题, 301和302都是http1.0就定义好的,在http1.1中才新增了 其余的状态码。
301 Moved Permanently 永久重定向

在请求的 URL 已被移除时使用。响应的 Location 首部中应该包含 资源现在所处的 URL。

默认情况下,永久重定向是会被浏览器缓存的。
302 Found 临时重定向

与 301 状态码类似;但是,客户端应该使用 Location 首部给出的 URL 来临时定位资源。将来的请求仍应使用老的 URL。

在浏览器的实现中,302默认以get重新发出请求。比如 以post访问 a.com ,用302重定向到b.com,浏览器会使用get请求b.com。但这样就会导致之前的post请求数据丢失,相对的 307不允许修改请求方法,这也是302和307最大的区别
在rfc1945 中规定:

If the 302 status code is received in response to a request using
the POST method, the user agent must not automatically redirect the
request unless it can be confirmed by the user, since this might
change the conditions under which the request was issued.

这段英文大意:如果对post请求返回了302状态码, 在未经用户确认的情况下不允许擅自发送请求,因为可能会修改请求条件。
在post数据量大的情况下从post改为get,肯定会丢失很多参数。但是很多浏览器都是以get方式重定向的,所以在后来的rfc7231 中取消了这一段强制要求,并将此要求放在了307状态码中。
303 See Other 临时重定向
303 是为了区分302而存在的。

维基百科:
虽然 RFC 1945 和 RFC 2068 规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器在收到302响应时,直接使用GET方式访问在Location中规定的URI,而无视原先请求的方法。[2]因此状态码303被添加了进来,用以明确服务器期待客户端进行何种反应。[3]
重定向到新地址时,客户端必须使用GET方法请求新地址。

307 Temporary Redirect
这个状态码和302相似,有一个唯一的区别是不允许将请求方法从post改为get。
在rfc7231的原话如下:

Note: This status code is similar to 302 (Found), except that it does not allow changing the request method from POST to GET

308 Permanent Redirect 永久重定向
rfc7538 新增的状态码

此状态码类似于301(永久移动),但不允许更改从POST到GET的请求方法。

308是307的永久版本,和307是一对
来个总结:
永久重定向有两个: 301和308。
两者都默认缓存,
但是308不允许将请求方法从POST修改到GET, 301允许。
临时重定向三个:302,303,307
303强制浏览器可以将请求方法从POST修改到GET
307不允许浏览器修改请求方法。
302一开始的标准是不允许修改POST方法,但是浏览器的实现不遵循标准,标准就向现实妥协而做了修改。
另外,关于默认缓存的响应头:

Responses with status codes that are defined as cacheable by default
(e.g., 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501 in
this specification) can be reused by a cache with heuristic
expiration unless otherwise indicated by the method definition or
explicit cache controls all other status codes are not cacheable by default.
这一段是在rfc7231中说明的,在 rfc7538又说明了 308是默认缓存的。文章来源地址https://www.toymoban.com/news/detail-435984.html

到了这里,关于http状态码301、302、303、307、308区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次nignx代理重定向302状态码

    提示:这里简述项目相关背景: 项目场景:示例: nginx代理配置大致如下,上游返回请求重定/index.html 提示:这里描述项目中遇到的问题: 前端浏览器收到请求响应码为302,导致页面无法加载 这里配置的代理请求头host只取到服务器的ip,导致上游服务器返回的重定向的地址为

    2024年02月16日
    浏览(44)
  • 301 Moved Permanently:了解HTTP永久重定向错误码

    HTTP错误码的作用和分类 HTTP错误码是指在进行HTTP通信时,服务器返回给客户端的状态码。它们用于表示请求的处理结果,以便客户端能够根据不同的状态码做出相应的处理。HTTP错误码分为5类,分别以不同的数字开头,如1xx表示信息响应,2xx表示成功响应,3xx表示重定向,

    2024年02月08日
    浏览(46)
  • http的响应码200,404,302,500表示的含义分别是

    200 - 确定。客户端请求已成功 404 - 未找到文件或目录 302 - 临时移动转移,请求的内容已临时移动新的位置 500 - 服务器内部错误 200是最常见的http状态码,它的含义很简单,就是成功了。一个正常网页返回的状态码就是200. 1、200概念 请求已成功,请求所希望的响应头或数据体

    2024年02月12日
    浏览(43)
  • HTTP项目常见状态码笔记(200,302,400,403,404,405,500...),

    目录 认识 \\\"状态码\\\" (status code) 出现200 403 Forbidden 出现404 404 Not Found 出现 405 Method Not Allowed 出现 500 Internal Server Error 504 Gateway Timeout 302 Move temporarily 301 Moved Permanently 出现 \\\"空白页面\\\"   出现 \\\"无法访问此网站\\\" 状态码表示访问一个页面的结果 . ( 是访问成功 , 还是失败 , 还是其

    2024年02月11日
    浏览(44)
  • http://与www.开头的网站有什么区别

    将http://和www.放一起比较,是没有实际意义的。 一、http协议 首先对于http://,这个其实只是一种协议;简单来说,就是先声明现在使用的是哪种方式来访问服务器上的内容。而除了http之外,还有ftp、https(http加上ssl,可以理解成http加上个安全锁)等协议方式。 举个例子:网

    2024年02月09日
    浏览(32)
  • http://与www.开头的网站有何区别

    转自:微点阅读 https://www.weidianyuedu.com 其实,将http://和www.放一起比较,是没有实际意义的。 一、http协议 首先对于http://,这个其实只是一种协议;简单来说,就是先声明现在使用的是哪种方式来访问服务器上的内容。而除了http之外,还有ftp、https(http加上ssl,可以理解成

    2024年02月04日
    浏览(30)
  • 枚举类型 表示不同的 HTTP 状态码和相应的错误消息

    java web业务中经常用常量来表示不同的 HTTP 响应状态,比如 这种枚举的使用方式允许你在代码中使用这些常量来表示不同的 HTTP 响应状态,而不需要硬编码状态码和错误消息。这提高了代码的可读性和可维护性,并降低了错误的风险,因为你可以使用这些常量而不是手动输入状

    2024年02月08日
    浏览(38)
  • Nginx处理302重定向端口丢失问题

    业务部署于Linux虚拟机中,域名解析到公网ip,公网ip的非标准端口映射虚机的标准端口。由于种种原因无法使用公网标准端口(80、443),只能使用非标准端口,公网端口8050到虚机80、公网端口8051到虚机443。 虚机内部通过Nginx当做静态资源服务器,监听80、443端口,而在虚机

    2024年02月16日
    浏览(39)
  • 前端拦截302重定向踩坑之旅

    工作项目系统管理着大量作品内容,其中不乏视频资源。某天有运营反馈,在系统内使用播放器下载视频时会提示网络错误下载失败的问题: 复现时,发现该现象为偶发,并非所有视频资源均不可下载。 经过排查,发现该问题原因是:部分后端返回的视频链接失效,无法直

    2024年04月25日
    浏览(44)
  • 关于Nginx下301重定向域名的方法

    在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等。 linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下。 第一种情况 :访问aaaaaaa站定向到bbbbbbbbbbb站 代码如下: server { server_naaaaaaame www.aaaaaaa.com ; r

    2024年02月10日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包