【问题标题】:Cookie in Webview androidWebview android中的Cookie
【发布时间】:2014-11-05 00:37:24
【问题描述】:

我正在努力在 webview android 中使用 cookie 和 javascript。

我有一个位于 sdcard 数据中的 HTML 页面。这个 html 文件由 javasript 和 cookie 组成。我需要在 webview 中加载这个 html 文件,webview 需要响应 javascript 和 cookie。

到目前为止完成的工作:-

为 webview 启用 javascript

WebView1.getSettings().setJavaScriptEnabled(true);

还尝试使用 CookieManager 启用 cookie

CookieManager.getInstance().setAcceptCookie(true);

这样做,webview 响应 javascript 但不响应 cookie。任何想法如何解决这个问题?

HTML文件如下

<!DOCTYPE html>
<html>
    <head>
        <script>
            function setCookie(cname, cvalue, exdays) {
                    var d = new Date();
                    d.setTime(d.getTime() + (exdays*24*60*60*1000));
                    var expires = "expires="+d.toUTCString();
                    document.cookie = cname + "=" + cvalue + "; " + expires;
            }

            function getCookie(cname) {
                var res = "No Cookie!";
                    var name = cname + "=";
                    var ca = document.cookie.split(';');
                    for(var i=0; i<ca.length; i++) {
                        var c = ca[i];
                        while (c.charAt(0)==' ') c = c.substring(1);
                        if (c.indexOf(name) != -1) res = c.substring(name.length, c.length);
                    }
                document.getElementById('txt').innerHTML = res;
            }
        </script><noscript>No JavaScript!</noscript>
    </head>

    <body onload="setCookie('id', 'Cookie is working properly!', '1');">        
        <p id="txt"> </p>
        <center>
            <a href="./test-2.html">Next Page</a>
        </center>
    </body>
</html>

当我在浏览器中打开此文件时,它工作正常。如果有人想在浏览器中打开此文件,请使用以下网址https://www.ypsid.com/demo/test/test-1.html

【问题讨论】:

  • 你的 android manifest 文件中是否有写外部存储权限?
  • 是的,它在清单文件中声明。Html 文件在 webview 中加载。在webview中打开html文件没有问题。问题是 webview 没有响应 cookie
  • 你能分享你的WebView代码吗?

标签: javascript android html cookies webview


【解决方案1】:

如果您使用的是 Android Lollipop,即 SDK 21,那么:

CookieManager.getInstance().setAcceptCookie(true);

行不通。你需要使用:

CookieManager.getInstance().setAcceptThirdPartyCookies(true);

我遇到了同样的问题,上面的那句话很有魅力。

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 2015-06-25
    • 2011-07-20
    • 1970-01-01
    • 2012-10-08
    • 2013-10-14
    相关资源
    最近更新 更多