前后端分离项目跨域时Cookie方面的问题

前后端分离项目跨域导致的问题

问题背景

先讲一下我的问题背景,最近写完了一个vue+ssm的前后端分离的项目,本地运行完全是没有问题的,然后部署到两个服务器上,一个用Tomcat部署后端提供API,一个用nginx部署前端,问题就产生了:

 部分Cookie(准确的说是我提供的Cookie)无法跨域传递
  • 我用Network看了具体情况就是只有向前端网站发送的请求中带有我的cookie(之后直接说成token,我用token做的验证),而发向后端网站的请求全部没有携带token,一开始以为是我的cookie被清了之类的情况,之后就去Application查看cookie的存储情况,仔细观察跟其他cookie的区别就是,其中Samesite列的值为LAX而不是我提供的cookie则没有值,这就是问题所在

在这里插入图片描述

  • Samesite

    • 其作用就是决定请求是否允许在访问第三方域的时候携带该cookie,无论是LAX和STRICT都会使Cookie拒绝在访问第三方域的时候被请求携带(LAX会放松一点,具体看我下面给的参考文献),这就是问题所在。
    • 此外如果后端在response.addCookie时未对cookie设置samesite的值时,Google浏览器会默认将其默认设置为LAX
  • 解决方法

    • 我使用的是SSM框架做的后端,jdk(我用的是8)提供的Cookie是没有对应的修改Samesite的接口的,我暂时还没有解决办法,只能部署在同一个服务器中,但是使用的如果是SpringBoot是用解决办法的,我目前还没有学SpringBoot,所以就不说了
    • SpringBoot的解决方法基本只要用了Samesite这个关键词就可以找到,我主要就是给大家提供一点思路吧

参考文献:
[1]Cookie 的 SameSite 属性 — 阮一峰 [http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html]

猜你喜欢

转载自blog.csdn.net/weixin_44815852/article/details/107811267