1
lizz666 2020-07-30 13:56:44 +08:00
之前看到阿里系发过相关文章,不知对你有没有用:
https://github.com/mqyqingfeng/Blog/issues/157 |
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 |
3
lululau 2020-07-30 14:07:31 +08:00
加个 filter 修改 set-cookie 的值不行吗
|
4
AmosOvO OP @throns 请求一下您公司是在什么位置拦截的 cookie,我用拦截器 after 方法拦截获取的 cookie 都还是获取的为空,感觉 cookie 在很后面才会去设置,
|
5
throns 2020-07-30 15:49:25 +08:00
有新的解决办法,我司服务都是通过 nginx 来转发的,nginx 配置加上 proxy_cookie_path / "/; secure"; 可解决问题,我自己在本地装了 nginx 验证了,不需要修改后端服务,不知道你司是不是通过 nginx 转发的
|
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 |
7
KuroNekoFan 2020-07-30 16:13:57 +08:00
好奇问一下,java servlet api 没办法直接操作 raw response 吗,还是说一般业务接口开发没法操作 raw response
|
8
throns 2020-07-30 16:15:33 +08:00
@caaaalabash 目前 Chrome 84 以上版本,如果不加上 secure 也会被 blocked
|
9
AmosOvO OP @throns 领导不让~让在代码中解决,所以还得麻烦问您一下,Set-Cookie 具体是在哪获取的,我使用的的拦截器无法获取到,估计还在后面的流程,服务器才在请求头里面添加 Set-Cookie
|
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 实测正常填充 |
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`. 我现在也没搞懂具体策略是怎么样的
|
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. |
14
caaaalabash 2020-07-31 17:45:13 +08:00
@throns secure 是必选项, 主要的问题在于其他浏览器 存在 不识别 SameSite: None, 或者将其视作 SameSite: Lax 的情况
|
15
throns 2020-07-31 20:08:22 +08:00 via iPhone
@caaaalabash 我们所说的都是 Chrome 浏览器,是 80 以上版本,不同系统和平台之间有不同的表现。你说的其他浏览器,是指 Chrome 不同版本,还是 Firefox,360 浏览器,搜狐浏览器,Edge 浏览器,还是其他的呢? 11 楼证实了不一定要 secure,我的疑惑是哪个版本必须要 secure,和系统有没有关系?
|
16
caaaalabash 2020-08-03 17:47:37 +08:00
@throns ......
|