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

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

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

307 Temporary Redirect

303 See Other

302 Found

咋一看主要区别如下:

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截图如下

http状态码307,303,302的区别 第1张

303get截图如下

http状态码307,303,302的区别 第2张

307post截图如下

http状态码307,303,302的区别 第3张

307get截图如下

http状态码307,303,302的区别 第4张

结语

本文标题:http状态码307,303,302的区别
本文链接:https://56way.com/p/98.html
作者授权:除特别说明外,本文由 无路 原创编译并授权 小无路 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

已有3位网友发表了看法:

1L渣渣 2017-09-26 10:25:28 回复
路总 307post重定向需要自己拦截一下然后再发送请求吗
2L渣渣 2017-09-26 14:32:58 回复
比昨天懂了一些 ! !如果这不是一个GET或者HEAD请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化!! 用户确认没理解是怎么回事,谢谢无路大神博客
3L子非鱼 2017-12-05 18:31:48 回复
307还有个好处是"原始请求中的请求方法和消息主体会在重定向请求中被重用",比如referer会在重定向后被复用到目标uri,302是会丢失信息的
详见:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Location
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/307

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。