【知识分享】前后端跨域使用cookie问题

【知识分享】前后端跨域使用cookie问题

问题描述

在我们业务中,采用了服务端设置cookie 作为登录的方案;
在本地开发阶段,cookie的设置均正常。
项目部署之后,服务端设置的cookie无法正常使用
项目的前端部署在 https://fe.fanyue.com/
项目服务端部署在 https://be.fanyue.com/
服务端发送的cookie,在请求中正确返回,但后续的接口请求中,前端无法携带cookie信息。

cookie

当用户浏览网页时,网站存储在用户电脑上的一小段文本信息。它由Web服务器创建,并发送给用户的Web浏览器,浏览器将这些信息保存在本地,以供该网站后续使用。
Cookie的主要作用是记录用户的浏览活动和偏好设置。例如,它可以记录用户的登录信息,使得用户在下次访问同一网站时无需再次输入用户名和密码;它可以记录用户在电商网站购物车中的商品,即便用户关闭网页后再回来,之前的商品仍然在购物车中等。
虽然Cookie为用户带来了便利,但也引发了隐私保护的担忧。因为它能够追踪用户的上网行为,所以一些用户担心自己的隐私可能会因此泄露。为此,很多国家和地区都出台了相关的法律法规,要求网站在使用Cookie时必须遵循透明原则,告知用户网站将如何使用Cookie,并给予用户选择是否接受Cookie的权利。

问题定位

chrome的浏览器的安全沙箱规则阻止了cookie的转发。
Chrome浏览器阻止Cookie转发主要是为了增强用户隐私保护和防止跨站追踪。其原因大概有如下几点
  1. 隐私保护:第三方Cookie由与用户当前访问的网站不同的域创建,它们通常用于广告和数据分析,以追踪用户在不同网站之间的活动。阻止第三方Cookie有助于减少用户在线活动的追踪,从而保护用户的隐私。
  2. 跨站追踪:第三方Cookie可以用于跨站追踪,即追踪用户在多个网站上的行为。这可能导致用户收到针对性的广告,也可能使敏感信息暴露给不必要的第三方。
  3. 用户控制:提供阻止第三方Cookie的选项,可以让用户对自己的在线数据和隐私有更多的控制权。用户可以根据自己的偏好来决定是否允许第三方Cookie。
  4. 法律和规定:随着对数据隐私的关注日益增加,许多国家和地区都出台了相关的法律法规,要求网站和浏览器尊重用户的隐私权。例如,欧盟的通用数据保护条例(GDPR)就对Cookie的使用提出了明确的要求。
  5. 安全性:减少第三方Cookie的使用可以降低潜在的安全风险,因为某些恶意网站可能会利用第三方Cookie来执行恶意代码或窃取用户信息。

解决方案

需要前后端一起配合解决

前端:

在请求中,增加 withCredentials 配置,以控制在发送请求时是否携带cookie;
这项配置需要应用在跨域资源请求中,涉及跨域,那就需要服务器正确配置跨域策略;否则前端这项配置无法生效。
// 以axios为例
axios.defaults.withCredentials = true
服务端:
如果服务器没有正确配置CORS策略,即使设置了withCredentialstrue,浏览器也不会发送Cookie。
服务端配置信息,有两部分,一部分是cookie的属性和配置;另一部分就是接口跨域的配置;
服务器必须显式允许来自特定源的请求通过设置CORS的Access-Control-Allow-Origin头部,而不能使用通配符*。同时,服务器还需要设置Access-Control-Allow-Credentialstrue,以指示它接受带有凭据的请求,这是接口跨域;
cookie的配置如下:需要注意的就是domain的配置,  Domain:.fanyue.com即:fanyue.com二级域名下的所有子域名均可共享
{
    path: /,
    Domain: .fanyue.cn,
    HttpOnly: true,
    Secure: true,
}

结语:

本分享纯属个人观点,如有错误,恳请指正~

© 版权声明
THE END
喜欢就支持一下吧
点赞9赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容