HTTP 302, 303, 307

华为服务器RAID配置避坑指南:如何通过iBMC快速识别阵列卡型号并完成初始化 本文详细解析华为服务器RAID配置全流程,重点介绍通过iBMC快速识别阵列卡型号、硬盘健康诊断及RAID级别选择的场景化策略。提供从iBMC登录到缓存策略调优的实战技巧,帮助工程师避免常见配置陷阱,提升服务器存储系统性能和稳定性。 阅读详情
     今日读书,无法理解HTTP302、303、307状态码的来龙去脉,决定对其做深究并总结于本文。
 
    《HTTP权威指南》第3章在讲解30X状态码时,完全没有讲清楚为什么要有302、303、307,以及他们的关系,一句“问题出在HTTP/1/1”让我一头雾水,莫名其妙;而第五章在讲重定向响应时,没有说到现在很常见的302,反而是说我从没遇到过的303和307。很是迷惑,对于这3个状态码,WiKi和RFC文档都有详解,下面我以我的思维添油加醋的描述一遍。

一、状态码——302

    RFC1945( http://tools.ietf.org/html/rfc1945#page-34),也就是HTTP1.0在介绍302时说,如果客户端发出POST请求后,收到服务端的302状态码,那么不能自动的向新的URI发送重复请求,必须跟用户确认是否该重发,因为第二次POST时,环境可能已经发生变化(嗯,POST方法不是幂等的),POST操作会不符合用户预期。但是,很多浏览器(user agent我描述为浏览器以方便介绍)在这种情况下都会把POST请求变为GET请求。
    RFC2616( http://tools.ietf.org/html/rfc2616#section-10.3.3),也就是HTTP1.1在介绍302时说,如果客户端发出非GET、HEAD请求后,收到服务端的302状态码,那么就不能自动的向新URI发送重复请求,除非得到用户的确认。(又是-,-)但是,很多浏览器都把302当作303处理了(注意,303是HTTP1.1才加进来的,其实从HTTP1.0进化到HTTP1.1,浏览器什么都没动),它们获取到HTTP响应报文头部的Location字段信息,并发起一个GET请求。

二、状态码——303和307

    从上面的介绍可以知道,HTTP1.1和HTTP1.0的302状态码意义是一样的,浏览器对它的处理也是一样的。POST方法的重定向在未询问用户的情况下就变成GET,这种不符合文档规范的问题依然存在。实践在前而文档在后,HTTP1.1把这种POST变GET的行为纳入了RFC文档:HTTP1.1新加入303和307状态码。
    文档中规定303状态码的响应,也就是上边提到的现在浏览器对302状态码的处理:POST重定向为GET。
    HTTP1.1文档中307状态码则相当于HTTP1.0文档中的302状态码,当客户端的POST请求收到服务端307状态码响应时,需要跟用户询问是否应该在新URI上发起POST方法,也就是说,307是不会把POST转为GET的。
    从网络上搜索到这个说法“303:对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI。 307:对于POST请求,表示请求还没有被处理,客户端应该向Location里的URI重新发起POST请求。”,从上面的介绍可以明白,这个说法是臆想而已,文档并没有这么说,而业界是否统一如此处理,还不好说,我没有抓到过307和303的包。
    文档也说到,为兼容很多HTTP1.1之前的浏览器,服务端在需要发出303状态码时,会选择用302状态码替代;而对于307的处理,则需要在响应实体中包含信息,以便不能处理307状态码的用户有能力在新URI中发起重复请求,也就是说,把重定向的页面展示给用户,让用户去点重定向URI链接(URI现在基本就是URL)。

三、总结

    303和307是HTTP1.1新加的服务器响应文档的状态码,它们是对HTTP1.0中的302状态码的细化,主要用在对非GET、HEAD方法的响应上。文档规定: 浏览器对303状态码的处理跟原来浏览器对HTTP1.0的302状态码的处理方法一样;浏览器对307状态码处理则跟原来HTTP1.0文档里对302的描述一样。 
     303和307的存在,归根结底是由于POST方法的非幂等属性引起的。
    在HTTP1.1中,302理论上是要被放弃掉的,它被细化为303和307,但为了兼容,它目前还在业界中大量使用,而303和307状态码我还没遇到过(没有使用场景,也没抓到过这样的响应报文)。为什么业界少使用303和307呢?对于GET和HEAD方法来说,307是没必要存在的,用302或者303就可以满足需求了,307仅在POST方法的重定向上有用处。所以我猜测它们少见的原因有两方面:1、POST方法重定向的使用场景太少,使得307状态码没有用武之地;2、GET方法虽然常需要使用的重定向,但使用302状态码也能正确运转,再考虑到微乎其微的兼容问题(现在的浏览器怎么可能不支持HTTP1.1呢!),也就没有使用303的必要了。
   
本文所在:http://www.cnblogs.com/cswuyg/p/3871976.html
 
参考资料:
2、RFC1945 http://tools.ietf.org/html/rfc1945#page-34
3、RFC2616 http://tools.ietf.org/html/rfc2616#section-10.3.3
桌面实施远程光电体积描记法:使用面部视频测量心率的C++详细指南 在现代医疗和健康监测领域,心率是一个非常重要的生理参数,它可以为我们提供关于身体健康状况的重要信息。但是,随着技术的进步,现在我们有了一种新的方法,称为远程光电体积描记法(rPPG),它可以无需与皮肤接触就测量心率。然后,我们从面部颜色的信号序列中提取绿色通道的值,因为绿色通道对于心率的变化最为敏感。在上述代码中,我们使用了OpenCV库,它是一个开源的计算机视觉库,非常适合这种应用。这种变化是由于血液流动引起的,当心脏跳动时,血液流经面部,导致肤色的轻微变化。要实现rPPG,首先需要检测并跟踪人脸。 阅读详情

相关推荐

ESP32水墨屏日历实战:低功耗自动更新与HTTPS数据解析

本文详细介绍了ESP32水墨屏日历项目的开发实践,重点讲解了低功耗自动更新与HTTPS数据解析的实现方法。通过ESP32的自动休眠功能和水墨屏的零功耗特性,结合HTTPS请求安全获取网络数据,实现了高效节能的桌面日历应用。项目代码开源,适合物联网开发者参考。

xx56789的博客 777

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

3xx开头的状态码都表示重定向。

qq_56785794的博客 4799

宇树机器人丝滑的二人转动作背后,MPC到底是什么?

了解MPC,让我们闻“机”起舞。

Barok的博客 2144

HTTP 中的 301、302、303、307、308 响应状态码

对 HTTP 有所了解的人,大概都清楚 3 开头的响应状态码都表示重定向的响应。但是具体细节究竟是什么,看似类似的效果,在本质上究竟有什么不同?如果你不能说清楚标题中五个状态码的具体差别...

weixin_43964148的博客 1万+

GAMIT基线解算实战:从RINEX数据准备到精度报告解读(附2024年tables更新攻略)

本文详细解析了2024年GAMIT基线解算全流程,从RINEX数据准备到精度报告解读,特别更新了tables配置攻略。涵盖工程目录设计、数据预处理、关键配置文件更新及基线解算策略优化,帮助用户掌握高精度GNSS数据处理技术,提升解算效率和结果可靠性。

weixin_42520374的博客 305

UE5 中 Python 编程:Python 代码加载到 UE5 中,如何供蓝图节点调用

配置 python 代码的路径,使 UE5 启动时,加载代码文件。重启之后,在蓝图中右键,就能搜索到你定义的方法了。参数为 str 字符串类型,返回值为 向量数组。注意:一定要 重启 UE5。

topcss的专栏 3996

HTTP状态码302、303和307的故事

    今日读书,无法理解HTTP302、303、307状态码的来龙去脉,决定对其做深究并总结于本文。       《HTTP权威指南》第3章在讲解30X状态码时,完全没有讲清楚为什么要有302、303、307,以及他们的关系,一句“问题出在HTTP/1/1”让我一头雾水,莫名其妙;而第五章在讲重定向响应时,没有说到现在很常见的302,反而是说我从没遇到过的303和307。很是迷惑,对于这3个...

weixin_34220963的博客 478

Android应用发布到Google Play的步骤和注意事项

发布Android应用到Google Play是将您的应用分享给全球用户的重要步骤。Google Play是Android平台上最大的应用分发渠道之一,使得开发者可以轻松将他们的应用推广到数百万的用户。在本篇博客中,我们将逐步介绍如何将您的Android应用发布到Google Play,同时提供详细的步骤和注意事项,以及相关的代码示例。

2201_76125261的博客 850

Http 302和307的区别

状态码307与302之间的唯一区别在于,当发送重定向请求的时候,307状态码可以确保请求方法和消息主体不会发生变化。如果使用302响应状态码,一些旧客户端会错误地将请求方法转换为GET:也就是说,在 Web 中,如果使用了GET以外的请求方法,且返回了302状态码,则重定向后的请求方法是不可预测的;但如果使用307状态码,之后的请求方法就是可预测的。对于GET请求来说,两种情况没有区别。 ...

duoduozhengqian博客 4920

孔雀优化算法(POA)详解:从孔雀智能到优化引擎

孔雀优化算法(POA)是一种新型元启发式优化算法,灵感来源于孔雀的社会行为和智能狩猎策略。该算法将孔雀群体分为雄孔雀、雌孔雀和幼孔雀三个阶层,分别对应全局探索、平衡搜索和局部开发三种搜索策略。通过模拟孔雀的求偶展示、自适应接近和Levy飞行等行为,POA实现了探索与开发的动态平衡。算法采用角色分配机制和位置更新方程,结合参数自适应调整,展现出优于传统算法的全局搜索能力和收敛性能。POA已成功应用于多个优化问题,其生物启发机制为解决复杂优化问题提供了新思路。

qq_42212808的博客 135

uniapp(全端兼容) - 最新详细实现支付键盘功能组件,从底部弹出数字键盘输入支付密码进行付款交互效果,自定义支付密码键盘仿微信、支付宝支付键盘,1~9密码数字键盘,电商支付(详细示例代码复制运行

uniapp,微信小程序,自定义数字键盘,输入支付密码的键盘组件,uniapp小程序如何实现从底部弹出输入支付密码自定义键盘功能,uniapp小程序密码支付键盘组件插件,自定义数字键盘输入页面,怎么封装底部弹窗自定义数字键盘用于输入支付密码,uniapp小程序仿类似电商支付密码输入模态框,uniapp微信小程序平台实现自定义支付密码键盘,uniapp 密码支付,数字键盘,安全键盘,交易键盘,交易密码,交易密码输入框,uniapp自定义支付键盘: uniapp自定义支付键盘,uniapp小程序端实现键盘输入支

✅ 精选推荐文章 2905

【HTTP】http重定向301/302/303/307

一、概述 重定向常常和请求转发放在一起讨论(前者是两次不相关的请求,后者是一次请求服务器端转发),然而本文并不讨论两者的区别,而是HTTP 1.0规范和HTTP 1.规范1中关于重定向的区别,以及实际使用中的情况。 重定向实际使用是一个响应码(301或302或303或307)和一个响应头location,当浏览器收到响应的时候check响应码是3xx,则会取出响应头中locat

厚积薄发者,轻舟万重山 2万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

http状态码 301 302 303 307区别

http幂等性 和本地环境相比,在分布式系统中,我们不能轻易不能保证分布式环境的可靠性。例如服务器端的返回结果由于网络等原因丢失了,导致客户端无法得知处理结果。在网页上,一些不恰当的设计可能会让用户认为上一次操作失败了,然后刷新页面,这就导致了接口被调用两次。如果使用幂等性方案,则将操作分成两个步骤: 获取本次操作的id。 使用本次id进行操作。 HTTP协议本身是一种面向资源的应用层协议,但...

qq_34400242的博客 665

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

http 301 302 303 307 308

301重定向是永久的重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址,一般用在网站http升级为https时用。 比如,我们访问 http://www.baidu.com 会跳转到 https://www.baidu.com,发送请求之后,就会返回301状态码,然后返回一个location,提示新的地址,浏览器就会拿着这个新的地址去访问。 虽然现实大多数都是用307,这主要时因为HSTS。 302重定向只是暂时的重定向,用来做临时跳转,搜索引擎会抓取新的内容而保留旧的地址,因为.

weixin_39590058的博客 783

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

http-301 302 303 307

需求: A、B 两个网站,单独登录这两个网站都是需要输入用户名和密码的。现在登录A网站后,点击一个链接link,可以直接进入B网站内部,就需要实现免登功能。 基本实现就是点击link的时候,服务器端返回一个302状态码的response,然后浏览器去请求response中的location,实现一个跳转。(深入的验证授信访问过程,没有细问后端同学,我的focus是在302 303 状态码

凡事预则立,不预则废 1240

关于http1.1 新增加状态码 303 307 与302 的对比

                      HTTP1.0在介绍302时说,如果客户端发出POST请求后,收到服务端的302状态码,那么不能自动的向新的URI发送重复请求,必须跟用户确认是否该重发,因为第二次POST时,环境可能已经发生变化(嗯,POST方法不是幂等的),POST操作会不符合用户预期。但是,很多浏览器(user agent我描述为浏览器以方便介绍)在这种情况下都会把POST请求...

zha_zi的专栏 808

http状态码——302(补充303/307)

请求重定向会导致请求不去执行成功的回调函数,而是再次发送一次请求。 项目中遇到了http返回状态码为 302 的情况,之前学习过基础知识知道是重定向,但是没有在实际项目中碰见,今天碰见了,那么就作为一个知识点记下来吧! 具体问题是:开发使用的架构http返回的是html文件而非json数据,请求之后页面会重新加载,但由于是重定向(而非 200 ),所以发送的请求不会进入到 success 的回...

sikies的博客 1949

http 301 302 303 307 308 傻傻分不清

http的重定向我们经常是张口就来,“小明,在nginx上做一个重定向就行了”。整个流程非常简单,服务端HTTP返回码是30x,头里面的Location字段代表新的URL。如下图所示: 但重定向也还是有需要深入探讨地方,返回码不仅有我们经常使用301和303还有302 307 308 它们有啥区别呢。可以按照是否缓存和重定向方法,两个维度去拆分。 缓存(永久重定向) 不缓存(临时重定向) 转GET 301 302、303 方法保持 308 307 如果是永久重定向那么浏览器客户端

柳清风的专栏 2245

http 303 307 302 状态码理解

最近在看 <<the rails4 way>> 书中提到了这几个状态码,网上搜到几篇文章 http://www.cnblogs.com/cswuyg/p/3871976.html http://blog.sina.com.cn/s/blog_9bd573450101hbae.html 看完之后我总结,302逐步要淘汰,不过貌似国内总是慢好几拍, 303 就是请...

weixin_30633507的博客 137

详解重定向(HTTP状态码301/302/303/307/308)附案例

关注前端瓶子君,回复“交流”加入我们一起学习,天天进步今天打算好好把状态码301、302、303、307、308好好撸一遍,并会测试下一些例子。状态码的解释我们都知道重定向与这几种状态码...

我本可以容忍阳光,如果我不曾见过太阳,然而阳光已使我荒凉,成为更新的荒凉。 1万+

php 状态码302,HTTP状态码302、303和307的故事

今日读书,无法理解HTTP302、303、307状态码的来龙去脉,决定对其做深究并总结于本文。《HTTP权威指南》第3章在讲解30X状态码时,完全没有讲清楚为什么要有302、303、307,以及他们的关系,一句“问题出在HTTP/1/1”让我一头雾水,莫名其妙;而第五章在讲重定向响应时,没有说到现在很常见的302,反而是说我从没遇到过的303和307。很是迷惑,对于这3个状态码,WiKi和RFC文...

weixin_29476357的博客 382

详解重定向(HTTP状态码301/302/303/307/408)(转载)

今天打算好好把状态码301、302、303、307、308好好撸一遍,并会测试下一些例子。

m0_46225088的博客 3667

HTTP状态码: 301/302/303/307

对于301、302的location中包含的重定向url,如果请求method不是GET或者HEAD,那么浏览器是禁止自动重定向的,除非得到用户的确认,因为POST等请求是非冥等的(也就是再次请求时服务器的资源可能已经发生了变化) 虽然rfc明确了上述的规定,但是很多的浏览器不遵守这条规定,无论原来的请求方法是什么都会自动用GET方法重定...

weixin_33816946的博客 230

详解重定向(HTTP状态码301/302/303/307/408)附例子

本文为原创文章,转载请注明出处。 今天打算好好把状态码301、302、303、307、308好好撸一遍,并会测试下一些例子。 状态码的解释 我们都知道重定向与这几种状态码有关,来看下这几种HTTP状态...

whiteGay的博客 4281

http状态码204/206/200/302/303/307

HTTP的状态码有很多种,主要有1xx(临时响应)、2xx(成功)、3xx(已重定向)、4xx(请求错误)以及5xx(服务器错误)五个大类,每个大类还对应一些具体的分类。平时我们接触比较多的是200、400、500等。 这里我们主要讨论一下状态码204,在HTTP RFC 2616中关于204的描述如下: If the client is a user agent, it SHOULD NOT c...

weixin_33795743的博客 1214
上一篇: HTTP 304
下一篇: docker redis
screaming
博客等级 码龄19年 61粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值