摘要:的状态码都是重定向,那么,,的重定向都有啥区别捏,我们先看一下各自的定义请求的资源现在临时从不同的响应请求。状态码和被添加了进来,用以明确服务器期待客户端进行何种反应。
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 状态码 一.简单介绍: 总述:HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误...
摘要:分别具体介绍几个常用的状态码二成功的响应结果表明请求被正常处理了。状态码返回时,不包含任何响应的主体部分。该状态码表示发送的请求需要有通过认证认证认证的认证信息。该状态码表明服务器端在执行请求时发生了错误。六总结状态码和状况的不一致。 返回结果的 HTTP 状态码 一.简单介绍: 总述:HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误...
阅读 3367·2023-04-26 02:41
阅读 2383·2023-04-26 00:14
阅读 2722·2021-08-11 10:22
阅读 1233·2019-12-27 11:38
阅读 3527·2019-08-29 18:34
阅读 2316·2019-08-29 12:13
阅读 2902·2019-08-26 18:26
阅读 1772·2019-08-26 16:49