关于谷歌浏览器新版本的 sameSite,跨域无法携带 Cookie - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AmosOvO
V2EX    Java

关于谷歌浏览器新版本的 sameSite,跨域无法携带 Cookie

  •  
  •   AmosOvO 2020-07-30 13:51:36 +08:00 6695 次点击
    这是一个创建于 1973 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近项目在一些同事电脑上总是登录不上去,最后排查出问题估计是谷歌浏览器版本 sameSite 默认值的问题,在网上也看了蛮多解决办法,大多数都是基于 spring-session-core 的 2.1 版本以后是支持修改默认的 sameSite 的,但是公司项目还是用的 2.0 的,并且也不让升级,所以请问下大家有什么其他办法吗?
    17 条回复    2020-08-10 14:42:23 +08:00
    lizz666
        1
    lizz666  
       2020-07-30 13:56:44 +08:00
    之前看到阿里系发过相关文章,不知对你有没有用:
    https://github.com/mqyqingfeng/Blog/issues/157
    throns
        2
    throns  
       2020-07-30 14:06:28 +08:00
    我们公司的项目最近也遇到了这个问题。
    目前的临时的解决方案是降低浏览器版本,80 一下
    后面的解决方案应该是设置 Set-Cookie: xxxx=xxxxx; SameSite=None; Secure,不过遇到的问题和你一样,考虑到后端服务的稳定性,需要做很多认证,反正短期解决不了。
    还可以将这两个配置设为 disabled 试试:
    chrome://flags/#same-site-by-default-cookies
    chrome://flags/#cookies-without-same-site-must-be-secure
    lululau
        3
    lululau  
       2020-07-30 14:07:31 +08:00
    加个 filter 修改 set-cookie 的值不行吗
    AmosOvO
        4
    AmosOvO  
    OP
       2020-07-30 15:46:50 +08:00
    @throns 请求一下您公司是在什么位置拦截的 cookie,我用拦截器 after 方法拦截获取的 cookie 都还是获取的为空,感觉 cookie 在很后面才会去设置,
    throns
        5
    throns  
       2020-07-30 15:49:25 +08:00
    有新的解决办法,我司服务都是通过 nginx 来转发的,nginx 配置加上 proxy_cookie_path / "/; secure"; 可解决问题,我自己在本地装了 nginx 验证了,不需要修改后端服务,不知道你司是不是通过 nginx 转发的
    caaaalabash
        6
    caaaalabash  
       2020-07-30 15:53:11 +08:00
    我的解决办法是这样, 额外设置一个 cookie
    set-cookie: yourname=sessionID SameSite: NOne=> 部分浏览器不识别 SameSite: None
    set-cookie: yourname-legacy=sessionID 不设置 SameSite
    后端从 cookie(yourname) || cookie(yourname-legacy)取出 sessionID
    KuroNekoFan
        7
    KuoNekoFan  
       2020-07-30 16:13:57 +08:00
    好奇问一下,java servlet api 没办法直接操作 raw response 吗,还是说一般业务接口开发没法操作 raw response
    throns
        8
    throns  
       2020-07-30 16:15:33 +08:00
    @caaaalabash 目前 Chrome 84 以上版本,如果不加上 secure 也会被 blocked
    AmosOvO
        9
    AmosOvO  
    OP
       2020-07-30 16:28:01 +08:00
    @throns 领导不让~让在代码中解决,所以还得麻烦问您一下,Set-Cookie 具体是在哪获取的,我使用的的拦截器无法获取到,估计还在后面的流程,服务器才在请求头里面添加 Set-Cookie
    throns
        10
    throns  
       2020-07-30 17:09:56 +08:00 via iPhone
    @AmosOvO 非常抱歉,我是前端,后端的具体逻辑不太懂,估计帮不上你的忙
    ragnaroks
        11
    ragnaroks  
       2020-07-30 17:28:59 +08:00
    set-cookie: sid=c595f0699ead4e8bac2467ad99b14ed9; expires=Fri, 31 Jul 2020 09:27:36 GMT; domain=example.com; path=/; samesite=none; httponly

    84.0.4147.105 实测正常填充
    throns
        12
    throns  
       2020-07-30 17:45:54 +08:00
    @ragnaroks 嗯嗯,和系统有关,我 Mac,最新版本也 set 成功,我们业务用的是 Window7,最新的版本很多失败,导致我之前排查的时候没有复现,后来远程他们的电脑才看到是这个问题,console 直接提示:A cookie associated with a resource at xxxxxx was set with `SameSite=None` but without `Secure`. It has been blocked, as Chrome now only delivers cookies marked `SameSite=None` if they are also marked `Secure`. 我现在也没搞懂具体策略是怎么样的
    ragnaroks
        13
    ragnaroks  
       2020-07-30 17:49:16 +08:00
    @throns 我 F12 有类似提示,但是确实是 set 成功了

    A cookie associated with a resource at "URL" was set with `SameSite=None` but without `Secure`. A future release of Chrome will only deliver cookies marked `SameSite=None` if they are also marked `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5633521622188032.
    caaaalabash
        14
    caaaalabash  
       2020-07-31 17:45:13 +08:00
    @throns secure 是必选项, 主要的问题在于其他浏览器 存在 不识别 SameSite: None, 或者将其视作 SameSite: Lax 的情况
    throns
        15
    throns  
       2020-07-31 20:08:22 +08:00 via iPhone
    @caaaalabash 我们所说的都是 Chrome 浏览器,是 80 以上版本,不同系统和平台之间有不同的表现。你说的其他浏览器,是指 Chrome 不同版本,还是 Firefox,360 浏览器,搜狐浏览器,Edge 浏览器,还是其他的呢? 11 楼证实了不一定要 secure,我的疑惑是哪个版本必须要 secure,和系统有没有关系?
    caaaalabash
        16
    caaaalabash  
       2020-08-03 17:47:37 +08:00
    @throns ......
    llanc
        17
    llanc  
       2020-08-10 14:42:23 +08:00
    @throns 我项目组也遇到了,用大佬的这个方法解决了 disabled
    chrome://flags/#same-site-by-default-cookies
    chrome://flags/#cookies-without-same-site-must-be-secure
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2877 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 14:18 PVG 22:18 LAX 06:18 JFK 09:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86