【问题标题】:Android WebView losing Cookies in redirectsAndroid WebView 在重定向中丢失 Cookie
【发布时间】:2016-07-13 17:43:21
【问题描述】:

我的问题是 WebView 处理重定向和自定义 cookie。

我做以下事情:

  1. 在应用程序创建中创建CookieSyncManagerCookieManager 的实例
  2. 在 util 类的静态部分调用 sCookieManager.setAcceptCookie(true);
  3. 致电sCookieManager.setCookie(url, value); sCookieSyncManager.sync();
  4. 最后是mWebView.loadUrl

服务器端发生的情况是,它首先获取我设置的正确 cookie,运行一些重定向并且 cookie 似乎丢失了。任何想法,我在这里做错了什么?

我尝试在另一个线程中运行 setCookie - sync 给出一些延迟,然后运行 ​​loadUrl 但它没有帮助。

所有类似的帖子似乎都有不起作用的解决方案。

谢谢。

更新:

我注意到使用 setCookie 提供多个 Cookie,例如:

setCookie("MyCookie=value; Domain=mydomain.com; Path=/; Secure; HttpOnly; MySecondCookie=value2....)"

只应用第一个,然后当服务器在它自己的域上运行重定向时它就消失了。 可以在循环中一次一个地设置自定义 cookie。

我在onReceivedSslError 中临时添加了handler.proceed();,我可以从日志中看到它在网站重定向之前触发并且Cookie 在下一页onPageFinished 中丢失,安全cookie 和安全cookie 之间是否存在某种联系?无效的证书链?

【问题讨论】:

  • 我也面临同样的问题?你有什么解决办法吗?

标签: android cookies webview


【解决方案1】:

尝试使用不

sCookieManager.setCookie(url, value) 

但是

sCookieManager.setCookie(cookieDomain, value)

cookieDomain 你可以找到例如使用 chrome://inspect

工作示例:

String cookieDomain = ".www.drive2.ru";
String siteUrl = "https://drive2.ru";

webView = (WebView) getView().findViewById(R.id.web_view);
webView.setWebViewClient(new WebViewClient()); // force open any new url in same webview (whether it is user click or redirect)

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.setCookie(cookieDomain, "cookieName=cookieValue");
webView.loadUrl(siteUrl);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2019-06-10
    相关资源
    最近更新 更多