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 引用
HTTP协议之3XX状态码_第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

你可能感兴趣的:(网络编程,http,状态码,3xx)