javascript - Cookie 在 Android Webview 的 iframe 中不起作用

标签 javascript android iframe cookies webview

我的基于 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/

相关文章:

html - iframe 中 CSS 类的样式

javascript - 什么是删除大写字母之间的空格但保留单词之间的空格的正则表达式?

javascript - 如何使用 fileupload jQuery 在文件不是图像类型时立即显示错误消息

javascript - 用于在 JS 函数中的变量之间切换的单选按钮

javascript - CKEditor instanceReady 无法在 Eclipse Nebula 中工作

android - startManagingCursor 的目的是什么?

android - For 循环导致应用程序可能在其主线程上做太多工作

html - File://link 在所有浏览器中什么都不做

java - Android SSL SNI 连接问题

javascript - 无法将 appendChild 附加到从另一个框架创建的节点