• Cookie跨域以及Cookie共享问题


    Cookie跨域问题

    假设有两个网站 A: www.a.com 与 B: www.b.com

    • 跨域请求的cookie存储问题

    在A域名的站点下请求了B域名,假设访问成功且发送的请求返回了cookie,那么此时浏览器保存该cookie的domain是 www.b.com,也就是说请求的是哪个地址,对应的请求返回的cookie的domian就是那个请求地址,和当前的域名无关。不会将B网站返回的cookie的域名设置为www.a.com。

    • 跨域请求的cookie携带问题

    在站点A下面访问B域名的接口,那么这是一个跨域请求,如果不做处理,此时这个请求就跨域了,浏览器在接收到响应以后会直接报错。那么这个时候如何让浏览器允许跨域请求?通常有2中解决办法:1.设置代理 2.服务器在响应头中添加 allow-origin。
    解决跨域以后,如何允许跨域请求携带cookie,例如访问B的接口,默认情况下是不允许带cookie的,此时需要设置axios的withcredentials的属性为true,告诉浏览器在访问B网站时,将B网站的cookie带上,此时光前端设置还不行,还需要后端在响应头中添加 allow-withcredentials = true,这样就可以保证跨域请求也可以携带cookie。

    Cookie共享问题

    cookie的作用域和域名有关,和协议以及端口无关。

    • path属性

    cookie的path属性决定了访问该域名的那些路径时可以携带cookie,当一个tomcat部署多个服务时,将path设置为/,则访问所有tomcat项目时都可以携带。

    • domain属性

    cookie的domain属性才是决定了访问哪个域名时可以携带哪些cookie,服务器可以手动设置domian,默认的domain就是请求url中的域名,但是服务器也可以设置当前域名的子域名,但是不允许设置其他域名,如果设置了其他域名,会直接被浏览器丢弃。 例如,访问 www.baidu.com ,则 服务器可以设置cookie的域名为 www.baidu.com、.baidu.com、baike.baidu.com。当baidu.com下的子域名访问时,也可以携带上.baidu.com的cookie,例如当前网站是 www.baike.baidu.com,访问baike的请求时也可以携带 baidu.com的cookie。利用这个特性也可以实现多个相互信任系统之间的单点登录问题。

    在这里插入图片描述

  • 相关阅读:
    计算机网络-负载均衡算法
    【编程题】【Scratch四级】2020.12 解密
    MAC地址学习和老化
    《数据结构》——时间和空间复杂度
    react 编程式导航实现页面跳转
    好玩的js特效
    docker网络模式--资源分配叙述(1)
    Azure DevOps(一)基于 Net6.0 的 WPF 程序如何进行持续集成、持续编译
    Java程序员所需Javascript知识
    html网页如何获取后台数据库的数据(html + ajax + php + mysql)
  • 原文地址:https://blog.csdn.net/qq_43750656/article/details/126834309