会话 Cookie 并不总是发送到 Android Webview 中的服务器

Session cookies are not always sent to server in Android Webview

提问人:Multicolaure 提问时间:4/6/2023 更新时间:4/6/2023 访问量:221

问:

我正在使用应用内浏览器插件开发一个离子应用程序来打开嵌入式 Web 视图

Web 视图中显示的 URL 使用“set-cookie”进行回复以启动新会话,并重定向到加载应用的新 URL。所有这些都很好。

该应用程序加载资源(js、图像)并进行 XHR 调用,从而发送会话 cookie。在某些时候,浏览器将随机停止发送其中一个资源的会话 cookie。它并不总是相同的资源,也并不总是发生。

在下面的示例中,加载网站图标的请求与 cookie (OK) 一起发送。下一个请求不会发送 Cookie。因此,服务器将创建一个新会话并设置一个新的 cookie。

第一个请求:enter image description here

第二个请求,未发送会话 cookie:enter image description here

为什么浏览器停止发送会话 cookie?

是因为另一个子域的现有 JSESSIONID cookie 吗?但它已经存在于第一个请求中。

它是否与“会话”到期有关?我尝试设置JSESSIONID cookie max-age,但没有成功。

我也知道 chrome 中的“Lax+POST”修复,但这是一个 GET 请求。

请注意,我没有在 iOS safari 上观察到这个问题(但由于它是随机的,我不能 100% 确定它不存在)。

Android Google-chrome Cookies Chromium WebViewChrome

评论

0赞 Lucy 10/19/2023
我遇到了同样的问题,仅在 SDK 32 和 33 中发生。你是如何解决这个问题的?
0赞 Multicolaure 10/20/2023
我无法解决它。最后,我刚刚使用了另一种基于令牌而不是 cookie 的身份验证机制。我也停止使用插件 github.com/danielsogl/awesome-cordova-plugins,现在使用 capacitorjs.com/docs/apis/browser
0赞 Lucy 10/24/2023
谢谢你的回答...由于 cookiesyncmanager 已被弃用,我将其替换为 cookieManager,我认为这是它发生的主要原因。

答: 暂无答案