Cookie在安卓Webview的iframe中不起作用

Cookies are not working in an iframe in Android Webview

本文关键字:iframe 不起作用 Webview Cookie      更新时间:2023-09-26

我的一个基于Webview的浏览器应用程序的用户报告了在iframe中嵌入谷歌日历的问题。Android Webview(Google Play的最新版本,在Android 6上测试)加载的iframe似乎无法读取或设置任何cookie。

该问题不存在于同一设备上的谷歌浏览器中。它似乎只与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总是返回一个空结果。即使您在iframe中创建了一个显示所有cookie的cookie,也会得到一个空结果。

是否有任何Webview设置会影响此行为?

我不知道为什么,但可以通过启用这样的第三方cookie来改善行为:

    if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        CookieManager.getInstance().setAcceptThirdPartyCookies(webView,true);

这样做之后,cookie将按预期在iFrame中工作。