HTTP协议之3XX状态码
大约 2 分钟...
HTTP协议之3XX状态码
前言
3XX系列状态码中302、303、307都是临时重定向,下面来说如何区分
分类
http1.1 3XX状态表
状态码 | 备注 |
---|---|
301 | Moved Permanently |
302 | Found |
303 | See Other |
304 | Not Modified |
307 | Temporary Redirect |
301
永久重定向
302
http协议1.1 引用
临时重定向,这里注意一个细节。
当请求方法是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
Powered by Waline v2.15.6