资讯专栏INFORMATION COLUMN

http状态吗307,303,302的区别

Freeman / 763人阅读

摘要:的状态码都是重定向,那么,,的重定向都有啥区别捏,我们先看一下各自的定义请求的资源现在临时从不同的响应请求。状态码和被添加了进来,用以明确服务器期待客户端进行何种反应。

http状态码是web开发中经常会用到的一个东西,前几天无意中看到一个url返回一个307的状态码,我一眼看着挺新鲜,就搜刮了一下相关知识,发现还挺有用,特此记录。

3xx的状态码都是重定向,那么307,303,302的重定向都有啥区别捏,我们先看一下各自的定义

307 Temporary Redirect

请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

新的临时性的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。因为部分浏览器不能识别307响应,因此需要添加上述必要信息以便用户能够理解并向新的URI发出访问请求。

如果这不是一个GET或者HEAD请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。

303 See Other

对应当前请求的响应可以在另一个URI上被找到,而且客户端应当采用GET的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。这个新的URI不是原始资源的替代引用。同时,303响应禁止被缓存。当然,第二个请求(重定向)可能被缓存。

新的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。

注意:许多HTTP/1.1版以前的浏览器不能正确理解303状态。如果需要考虑与这些浏览器之间的互动,302状态码应该可以胜任,因为大多数的浏览器处理302响应时的方式恰恰就是上述规范要求客户端处理303响应时应当做的。

302 Found

请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

新的临时性的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。

如果这不是一个GET或者HEAD请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。

注意:虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应,并且使用GET方式访问在Location中规定的URI,而无视原先请求的方法。状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。

咋一看主要区别如下:

302是http1.0的协议状态码,在http1.1版本的时候为了细化302状态码又出来了两个303和307,

你可以理解为303就是我们之前的302干的事情,临时重定向。

307有点意思:

如果这不是一个GET或者HEAD请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化

不是get或head,那比如我们提交一个post会怎么样。我做了个测试,demo地址点击这里

我有四个表单,分别测试303和307的get和post请求,他们都会重定向到同一个url(target.php),这个php会打印出所有的请求参数

我把四个结果截图如下

303post截图如下

303get截图如下

![

][2]

307post截图如下
![

][3]

307get截图如下

![

][4]

结语

**303重定向不会自动吧get,post的请求带到目标url去。
307重定向会把post的请求自动带到目标url,而对于get请求307也不会把参数带过去**

原文见这里

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82160.html

相关文章

  • 前端性能优化指南

    摘要:为了可以顶下这个雷,特意买了高性能网站建设指南。规则七避免使用表达式原因表达式在你不知道得情况下执行多次,严重影响前端性能。这也是会降低前端性能的。 最近要实现前端性能探测,可是对于一个刚入职场的我来说前端性能是个啥,我还是个只追求页面展示效果的娃儿~。为了可以顶下这个雷,特意买了高性能网站建设指南。这本书真的不错,强烈推荐看到本文的朋友看一下。 规则一 减少http请求数 原因:为什...

    Ethan815 评论0 收藏0
  • TCP/IP基础总结性学习(4)

    摘要:分别具体介绍几个常用的状态码二成功的响应结果表明请求被正常处理了。状态码返回时,不包含任何响应的主体部分。该状态码表示发送的请求需要有通过认证认证认证的认证信息。该状态码表明服务器端在执行请求时发生了错误。六总结状态码和状况的不一致。 返回结果的 HTTP 状态码 一.简单介绍: 总述:HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误...

    lemanli 评论0 收藏0
  • TCP/IP基础总结性学习(4)

    摘要:分别具体介绍几个常用的状态码二成功的响应结果表明请求被正常处理了。状态码返回时,不包含任何响应的主体部分。该状态码表示发送的请求需要有通过认证认证认证的认证信息。该状态码表明服务器端在执行请求时发生了错误。六总结状态码和状况的不一致。 返回结果的 HTTP 状态码 一.简单介绍: 总述:HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误...

    boredream 评论0 收藏0

发表评论

0条评论

Freeman

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<