单点登录与权限管理本质:HTTP重定向

  

继续介绍”单点登录与权限管理”系列的第一部分:单点登录与权限管理本质,本篇说说HTTP重定向,它也是完成单点登录的基础知识。

  

单点登录需要在多个web项目之间相互跳转,使用重定向技术,自动完成登录操作。另外,当实际资源被迁移到其他URL时,可使用重定向技术,将访问原有URL的请求,自动跳转到新网址,保持原有URL有效。

  

本篇主要从以下几个方面介绍:

  
      <李>重定向基本概念   <李> Nginx重定向李   <李> Servlet重定向李   <李>春天使用重定向李   
  
基本概念
  <编辑>基本原理   

在HTTP协议中,服务器通过发送特定的响应实现重定向,浏览器在接收到响应后,可根据状态码判定重定向,并使用指定的新URL重新请求。重定向的响应状态码为3 xx,不同的状态码表示不同的重定向类型。

  

单点登录与权限管理本质:HTTP重定向

  

浏览器从响应头中获的位置取新的URL,重新发送请求。

  <编辑>重定向类型   

重定向类型包括永久重定向,临时重定向,特殊重定向,不同的重定向类型,一方面会影响浏览器的操作,一方面会影响搜索引擎的收录。

  

永久重定向,是指原URL不再被使用,应优先选择新的URL,搜索引擎机器人会在遇到该状态码时,触发更新操作,使用新的URL。常见的状态码有301年,永久移动。

  

临时重定向,如果请求的资源临时不可用,但可从其他地方访问。搜索引擎不会记录该临时的链接。常见的状态码有302,307个临时重定向。

  304年

特殊重定向不修改资源未被修改,会从本地缓存中获取网页;300多项选择,是一种手工重定向,用户可选择重定向的页面。

  <编辑>设置重定向方法   

除了上面介绍的重定向方法,还可以通过HTML的metay元素,或者JS实现重定向,但还是建议优先选择上面介绍方法。

  
 <代码类=" language-html "> & lt; head>
  & lt;元http-equiv=八⑿隆蹦谌?" 0;URL=https://www.mi.com "/比;
  & lt;/head>  
  第

内容属性值,一个数字表示等待多少秒后进行跳转。

  
 <=坝镅詊avascript代码类>窗口。位置=" https://www.mi.com ",  
  
Nginx重定向
  <编辑>重写   

nginx的重写主要功能就是实现URL的重定向,其语法规则如下:

  
 <代码类=" language-nginx ">重写& lt; regex>& lt; replacement>(旗) 
  

regex正则匹配需要重定向
的url替换替换内容,将正则匹配的内容替换更换成
标记标记,具体如下:

  
      <李>:本条规则匹配之后,继续向下匹配新的重写,李   <李>打破:本条规则匹配完成即终止,后面的规则不再匹配。   <李>重定向:返回302临时重定向;李   <李>永久:返回301年永久重定向;李   
  

rewirte参数的标签段位置:服务器位置,如果

  <编辑>重写示例   

将mi.com重定向www.mi.com

  
 <代码类=" language-nginx ">服务器{
  听80;
  server_name mi.com;
  重写^/(. *)http://www.mi.com/1美元永久;
  } 
  <编辑> 返回   

可通过返回直接重定向,如下:

  
 <代码类=" language-nginx ">服务器{
  听80;
  server_name example.com;
  返回301美元方案://www.mi.com request_uri美元;
  } 
  
Servlet重定向
  

首先要区分开转发和重定向的概念,转发是在服务端完成的,浏览器地址栏中的地址不会改变,是一次请求;重定向是在浏览器端完成的,浏览器地址栏会变化,是二次请求。

  

无论是转发还是重定向,在执行方法前,不要向客户端输出内容。

  <编辑>转发   
 <代码类="语言java ">公共空doPost (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException {
  response.setContentType (" text/html;charset=utf - 8”);
  ServletContext sc=getServletContext ();
  RequestDispatcher调度员=零;
  调度程序=sc.getRequestDispatcher (" index . jsp ");
  调度员。提出(请求、响应);
  } 
  <编辑>重定向   
 <代码类="语言java ">公共空doPost (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException IOException {
  response.setContentType (" text/html;charset=utf - 8”);
  response.sendRedirect ("/index . jsp ");
  }

单点登录与权限管理本质:HTTP重定向