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

时间:2016-07-30 09:15:10

标签: javascript android iframe cookies 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>
&#13;
&#13;
&#13;

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

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

1 个答案:

答案 0 :(得分:8)

我不知道为什么但是可以通过启用第三方Cookie来改善行为:

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

这样做之后,cookie就像预期的那样在iFrame中工作。