结论

  • 3XX开头的HTTP状态码都表示重定向的响应。
  • 301、308是永久重定向;302、303、307是临时重定向。
  • 301、302是http 1.0的内容,303、307、308是http1.1的内容。
  • 301和302本来在规范中是不允许重定向时改变请求method的(将POST改为GET),实际许多浏览器实现的时候允许重定向时改变请求method。
  • 303的出现是允许重定向时改变请求method。此外303响应禁止被缓存。307、308则不允许重定向时改变请求method。

RFC 7231规定:

  • 301 Moved Permanently,永久重定向
  • 302 Found
  • 303 See Other
  • 307 Temporary Redirect

RFC 7538规定:

  • 308 Permanent Redirect 永久重定向

301、302搜索引擎处理区别

  • 301表示搜索引擎在抓去新内容的同时,将旧的网址替换为重定向之后的网址;
  • 302表示旧地址的资源仍存在,重定向时临时从A地址跳转到B地址,搜索引擎会抓取新的内容,并继续保存旧的网址。

临时重定向:302、303与307

结论

  • 302允许各种各样的重定向,一般都实现为GET到GET重定向,但是不能确保POST会重定向为POST。
  • 303只允许任意请求到GET的重定向。
  • 307和302一样,但不允许POST到GET的重定向。

302 Found

  • 302表示目标资源临时移动到了另一个URI上。由于重定向是临时发生的,所以客户端之后的请求中应该使用原本的URI。
  • 响应header的Location会带上重定向的URI,浏览器可以使用Location中的URI进行自动重定向
  • 注意:由于历史原因,用户代理可能会在重定向后的请求中把POST方法改为GET。如果不想这样做,应该响应307(Temporary Redirect)状态码。

303 See Other

  • 303表示服务器要将浏览器重定向到另一个资源,这个资源的URI会写在响应Header的Location字段。事实上,重定向到的资源并不是请求的资源,而是对请求资源的一些描述。
  • 303 通常用于将POST请求重定向到GET请求。例如上传了一份个人信息,服务器返回303响应,将你导向一个上传成功页面。
  • 303 不管原请求是什么方法,重定向请求的都是GET(或者HEAD)
  • 303响应禁止被缓存。

307 Temporary Redirect

  • 307的定义实际上和302是一致的,唯一区别在于,307状态码不允许浏览器将原本POST的请求重定向到GET请求上。

永久重定向:301、308

301 Moved Permanently

  • 301表明目标资源被永久的移动到了一个新的URI,任何未来对这个资源的引用都应该使用新的URI。

308 Permanent Redirect

  • 308与301定义一致,唯一的区别在于,308状态码不允许浏览器将原本为POST的请求重顶到GET请求上。

参考:

https://www.cnblogs.com/wuguanglin/p/redirect.html

https://zhuanlan.zhihu.com/p/60669395

HTTP中的301、302、303、307、308的更多相关文章

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

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

  2. HTTP 的重定向301,302,303,307(转)

    HTTP 的重定向301,302,303,307(转) (2012-12-11 11:55:04) 转载▼ 标签: 杂谈 分类: 网络 301 永久重定向,告诉客户端以后应从新地址访问.302 作为H ...

  3. Python requests 301/302/303重定向(跨域/本域)cookie、Location问题

    今天使用request的get方法获取一个网站的登录页信息,结果使用charles抓包的时候发现该网站登录页303(重定向的问题),网上查了很多资料,原因如下: 一.cookie 原因:利用reque ...

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

    HTTP的状态码有很多种,主要有1xx(临时响应).2xx(成功).3xx(已重定向).4xx(请求错误)以及5xx(服务器错误)五个大类,每个大类还对应一些具体的分类.平时我们接触比较多的是200. ...

  5. HTTP状态码及其含义 503 500 401 200 301 302

    下表显示了常见的HTTP 1.1状态代码以及它们对应的状态信息和含义. 应当谨慎地使用那些只有HTTP 1.1支持的状态代码,因为许多浏览器还只能够支持HTTP 1.0.如果你使用了HTTP 1.1特 ...

  6. http status 301/302 & java重定向/转发

    一.301/3021.什么是301转向?什么是301重定向? 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header) ...

  7. nginx 301 302跳转配置总结

    首先看简单的代码示例,关于nginx 301 302跳转的. 301跳转设置: server { listen 80; server_name 123.com; rewrite ^/(.*) http ...

  8. http 303 307 302 状态码理解

    最近在看 <<the rails4 way>> 书中提到了这几个状态码,网上搜到几篇文章 http://www.cnblogs.com/cswuyg/p/3871976.htm ...

  9. http返回码301、302、307、305含义和区别

    301永久重定向,302暂时移动,seo对301和302的处理不一样: 301和302会出现数据丢失问题,重定向后请求数据丢失: 307临时重定向,数据不会丢失:

随机推荐

  1. 对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream

    package seday06; import java.io.Serializable;import java.util.Arrays; /** * @author xingsir * 使用当前类来 ...

  2. Flask 教程 第九章:分页

    本文翻译自The Flask Mega-Tutorial Part IX: Pagination 这是Flask Mega-Tutorial系列的第九部分,我将告诉你如何对数据列表进行分页. 在第八章 ...

  3. Java - IO 内存流和打印流

    IO 内存流和打印流操作 字符编码 计算机中所有的信息组成都是二进制数据,所有能够描述的中文文字都是经过处理后的结果:所有的语言文字都会使用编码来进行描述,例如:ASCII码 常见编码 GBK/GB2 ...

  4. MyBatis与log4j

    1.前言   在项目中编写Sysem.out.prinltn()的时候,是输出到控制台的,当项目发布到tomcat之后,是没有控制台的,不过可以在命令行界面还能看见,但是不容易观察一些输出结果.log ...

  5. django验证码captcha

    官方文档 https://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation 使用命令安装pip instal ...

  6. [靶场实战]:SQL注入-显错注入

    SQL注入的本质:就是将用户输入的数据当作代码带入执行. 注入条件: 1.用户能控制输入 2.能够将程序原本执行的代码,拼接上用户输入的数据进行执行 首先检查是否存在注入点 Rank1: 构造语句 ? ...

  7. CSS3的nth-child() 选择器

    CSS3的nth-child() 选择器,表格奇偶行变色 nth-child() 应用背景 CSS3的nth-child() 选择器,我之前很少用,在做表格偶数行变色的时候,我通常在绑定的时候,做一个 ...

  8. LG5239 回望京都 组合数+暴力

    问题描述 LG5239 题解 我就是个傻逼,鉴定完毕. 连 \(C_m^n=C_{m-1}^n+C_{m-1}^{n-1}\) 都忘了. 所以暴力求出 \(1000\) 以内的 \(C_i^j\) , ...

  9. 设计模式-Adapter(结构型模式)针对第三方库 函数 接口不匹配的问题,分为类模式 与 对象模式 两种

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //****************************类模式的Adaptr*********************** ...

  10. C++ int型负数除法取余问题

    1:关于除法,不管是正数还是负数都是向0取整的:10/4 = 2,10/(-4) = -2 2:负数取余,通过取模来判定 |小| % |大| = |小| 符号同前    |大| % |小| = |余| ...