💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 前言 Chrome从70版本开始,出现了所谓的同源策略问题。80版本开始默认SameSite=Lax,导致跨域Cookie传输收到限制。 我们遇到的问题是:从其他网站跳转回来的时候,地址栏在正常地址的基础上出现了JSESSIONID=XXXXXXXXX,导致原有session失效。 # # 二、解决方案 ## 1.方案一:修改浏览器配置 此方式比较粗暴,直接将浏览器的SameSite的属性设置回到以前的None状态。但缺点是每台客户端机器都需要配置,适用于用户范围可控的情景。 据说从91版本开始,此方式失效,未进行测试。。。。 1)chrome地址栏输入chrome://flags 2)通过禁用“SameSite by default cookies”和“Cookies without SameSite must be secure”功能开关 3)重新启动浏览器 方式2和方式3是设置samesite=none,且显式声明secure=true,只支持https且samesite=none的情况下跨域携带cookie。 ## 2.方案二:使用Nginx # 设置一个变量,用于判断是否增加SameSite=None属性 set $cookiePathMagicFlag ''; # 00~69 之间Chrome, 设置为-evil' ``` if ($http_user_agent ~ "Chrome/([0-6][0-9]\.)"){ set $cookiePathMagicFlag '-evil'; } location / { # nginx其他配置 # xxxxxxxxx # 增加SameSite=None、secure配置 proxy_cookie_path /$cookiePathMagicFlag "/; httponly; secure; SameSite=None"; } ``` ### 3.方案三:若服务器为Tomcat,可使用以下方式(Tomcat8.5.x以上版本) 修改conf/context.xml ``` <?xml version="1.0" encoding="UTF-8"?> <!-- The contents of this file will be loaded for each web application --> <Context> <!-- Default set of monitored resources. If one of these changes, the --> <!-- web application will be reloaded. --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- 配置sameSiteCookies=None --> <CookieProcessor sameSiteCookies ="None" /> </Context> ```