HTTP协议之3XX状态码

本文详细解析HTTP协议中3XX系列状态码,重点对比302、303、307的区别,探讨从HTTP1.0到1.1版本中重定向状态码的演变,以及浏览器实现与协议规定的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

3XX系列状态码中302、303、307都是临时重定向,下面来说如何区分

分类

http1.1 3XX状态表

状态码备注
301Moved Permanently
302Found
303See Other
304Not Modified
307Temporary Redirect

301

永久重定向

302

http协议1.1 引用
http1.0
临时重定向,这里注意一个细节。

当请求方法是post方法的时候,需要用户确认才可以重定向到新的uri。比如弹框询问用户是否重定向到新的地址

但是多数浏览器实际实现的时候并没有遵循这一条,所以才在http1.1中引入了303和307两个状态码。302为了兼容老版本也保留了下来

303与307

在http协议1.0中是没有这两个状态码的。在http1.1中为了解决上个版本出现的协议规定与浏览器实现的歧义问题,引入了303和307两个状态码。以此来将1.0协议的规定和实际浏览器实现这两种情况拆开。

303

符合1.0版本时,浏览器对于302状态码的实际实现。
无论请求方法是get或者post,遇到303都直接重定向。

307

符合1.0版本时,协议对302状态码的纸面规定。
当请求方法是post方法的时候,需要用户确认才可以重定向到新的uri

304

304的含义不是重定向。
304表示用户查找的资源存在,但是不满足请求需要的条件。
一般出现304的情况,请求首部中包含if-xxx这样的条件请求,当判断条件为假的时候就会返回304。
例如:

If-Modifed-Since: Mon, 14 Jan 2019 00:00:00 GMT

此字段指定需要的资源在设置的时间前是否有更新过,如果没有更新则返回304。
此类字段还有很多,详情请查看http协议 RFC

参考资料

Hypertext Transfer Protocol – HTTP/1.0
Hypertext Transfer Protocol – HTTP/1.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值