【问题标题】:Cookie on Android 2.2 is not available in WebViewAndroid 2.2 上的 Cookie 在 WebView 中不可用
【发布时间】:2013-02-06 15:47:48
【问题描述】:

我制作了一个最低要求 API 8 的 Android 应用。 用户在我的后端使用 cookie 进行身份验证。这适用于所有具有 api 级别 9 或更高级别的设备。 Cookie 使用 CookieManager 保存:

CookieManager cManager = CookieManager.getInstance();
CookieSyncManager.createInstance(LauncherApplication.getAppContext());
cManager.setAcceptCookie(true);
cManager.setCookie(".xxxxxxxx.xx", "MobileGuid=" + guid);
CookieSyncManager.getInstance().sync();

我用 CookieManager 检查这个 Cookie 是否也可用:

public static boolean hasCookie(){
    CookieManager cManager = CookieManager.getInstance();
    String cookieString = cManager.getCookie(".xxxxxxx.xx");
    if(cookieString != null && cookieString.contains("MobileGuid")){
        return true;
    }
    return false;
}

这始终返回 true,但如果 Android 版本高于 2.2,则 Cookie 仅在 WebView 中可用。 (我用phpinfo检查了这个)

我的 WebView 配置如下所示:

String databasePath = LauncherApplication.getAppContext().getApplicationContext().getDir("database",
            Context.MODE_PRIVATE).getPath();

    WebSettings mainWebSettings = mainWebView.getSettings();
    mainWebSettings.setJavaScriptEnabled(true);
    mainWebSettings.setAppCacheEnabled(true);
    mainWebSettings.setDatabaseEnabled(true);
    mainWebSettings.setDomStorageEnabled(true);
    mainWebSettings.setDatabasePath(databasePath);

【问题讨论】:

    标签: android cookies webview cookiemanager


    【解决方案1】:

    当你调用 cManager.setCookie() 时,尝试传递

    cManager.setCookie("a.xxxxxxxx.xx", "MobileGuid=" + guid + "; domain=xxxxxxx.xx");
    

    所以我在第一个参数(字面意思是字符'a')中添加了一个“a”,并在 cookie 本身中添加了"domain=xxxxxxx.xx"

    您编写的代码似乎都是正确的,而 API 9 设备不发送 cookie 而 API 14 设备发送 cookie 时,我遇到了类似的问题。恐怕我不知道它究竟为什么会起作用,但它是唯一对我有帮助的东西。

    【讨论】:

      【解决方案2】:

      就像 Hylianpuffball 的答案一样,这个想法是在您的域名下方添加一个字符。我认为 CookieManager 正在寻找类似 .domain.com 的内容,并且完成了某种子字符串来获取域名。

      只需添加一个点或任何字符,它就会起作用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 2021-06-07
        • 2014-11-05
        相关资源
        最近更新 更多