在Android Webview中,Cookie无法在iframe中运行

Ale*_*rov 4 javascript cookies iframe android webview

我的基于Webview的浏览器应用的一位用户报告了在iframe中嵌入Google日历的问题.看起来Android Webview加载的iframe(Google Play的最新版本,使用Android 6测试过)无法读取或设置任何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>
Run Code Online (Sandbox Code Playgroud)

如果您通过主框架中的链接打开cookie站点,您可以通过"创建Cookie ..."或"显示所有Cookie"按钮设置/读取Cookie.在iframe中,显示所有cookie始终返回空结果.即使您在iframe中创建了一个显示所有Cookie的cookie,也会获得一个空结果.

是否存在影响此行为的Webview设置?

Ale*_*rov 10

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

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

在这样做之后,cookie正在按照预期在iFrame中工作.