在HTTP状态码中,3XX表示重定向,指网页发生了转移,重定向到目标地址中。
301:表示永久性转移 (Permanently Moved)
302:表示临时性转移(Temporarily Moved)
301和302都是将URL地址转移到新的地址中,这是二者的共同点。不同点是:
301适合永久重定向:
常见场景是使用域名跳转。浏览器发出原始请求后重定向到新地址,浏览器会缓存这个请求,等下次再次访问原始地址时会直接请求到新地址去。
302适合临时跳转:
可用于临时的、动态的地址跳转,每次请求原地址都会重新重定向到目标地址。应用场景:页面单点登录。
功能:门户系统使用CAS统一认证系统。在门户上集成第三方应用后点击应用会携带包含用户信息的ticket参数。如果请求中没有ticket参数,则需要重定向到CAS的登录页面。
1、时序图理解
2、针对第1步接收ticket参数
CAS点击应用(即API接口)默认是没有ticket的(可能和客户的CAS服务器有关),因此会重定向到/cas/login登录页面。关键在于是301还是302重定向。
当使用302时,API接口会有2次调用记录。点击应用是第1次不携带ticket请求 API接口被重定向到CAS登录页面;随后CAS携带ticket第2次请求API进入右侧条件
| 当使用301时,API接口只有在浏览器第一次调用时才会有2次调用记录(同302),之后调用时浏览器已经默认把CAS登录页面作为API接口进行缓存,调用API时默认调用CAS登录页面,因此API接口只有一次 携带着ticket的请求记录
|