cookie跨域共享的实现方案

  由于工作需要,花费了较多的时间处理跨域的问题,未避免遗忘,特此记录。

1.跨域的场景:

      第一种:协议不同

      第二种: 域名不同

      第三种:端口不同;

2.跨域的关键点:

   首先,跨域(CORS)需要浏览器和服务器同时支持;

   其次,跨域的安全性,由浏览器全权负责

   最后,跨域通信如果需要带Cookie,需要双方都同意;

3.后台跨域的处理:

    基于springmvc的后台,在webMvcHandlerAdapter设置Cors放行;  实现方式可以用注解对单个请求处理,或者全局配置的方式;

    其它服务器容器,在返回头中设置 Access-Control-Allow-Origin: *  ;

    其本质也就是在响应头里面设置 Access-Control-Allow-Origin: * 字段;

4.前台跨域处理(Cookie共享):

    1.默认情况下,某个源只能在 当前域  或者 当前域的父级写入Cookie(同级与子级都不行);

        比如, one.automannn.cn 可以 往 one.automannn.cn  和  automannn.cn 写入 Cookie记录;

                 two.automannn.cn 可以 读取 到  two.automannn.cn  和  automannn.cn 的Cookie记录;

         因此,第一种共享方案: 通过代理,将不同的关联系统 设置成 父子域;(不适用于动态接入系统,以及 系统太多的情况,且耦合度很高);   (即,通过后台登陆其它系统的方式,进行浏览器共享;)

        第二种共享方案: 通过浏览器+服务器的方式,由于天生符合CORS协议的要求,所以可以实现  类似于Cookie共享(即需要将cookie存储在不同的域下)的功能;

     此外,同名的Cookie不一定相互排斥,即某一个请求可能包括多个JSESSIONID;Cooke的唯一性还需要由 Domain,Path共同确定;

参考:

      总结一下跨域的几种情况

      跨域资源共享 CORS 详解   ——–>跨域必看文章

    原文作者:Automannnn
    原文地址: https://blog.csdn.net/qq_36285943/article/details/107541874
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞