我的基于 Webview 的浏览器应用程序的一位用户报告了在 iframe 中嵌入 Google 日历的问题。看起来由 Android Webview(来自 Google Play 的最新版本,使用 Android 6 测试)加载的 iframe 无法读取或设置任何 cookie。
同一设备上的 Google Chrome 中不存在该问题。它似乎只与Android Webview有关。
我可以通过以下站点重现该问题。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
</head>
<body>
<a href="http://www.w3schools.com/js/js_cookies.asp">Cookies Management</a>
<br><br>
<iframe style="margin-top: 30px; border-width: 1px;" src="http://www.w3schools.com/js/js_cookies.asp" width="400" height="672" scrolling="yes"></iframe>
</body>
</html>
如果您通过主框架中的链接打开 cookie 站点,您可以通过“创建 Cookie...”或“显示所有 Cookie”按钮设置/读取 cookie。然而,在 iframe 中显示所有 cookie 总是返回空结果。即使您在显示所有 cookie 的 iframe 中创建一个 cookie,也会得到一个空结果。
是否有任何影响此行为的 Webview 设置?
最佳答案
我不知道为什么,但是可以通过像这样启用第三方 cookie 来改进行为:
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
CookieManager.getInstance().setAcceptThirdPartyCookies(webView,true);
这样做之后,cookie 将按预期在 iFrame 中工作。
关于javascript - Cookie 在 Android Webview 的 iframe 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672306/