Android WebView在重定向中丢失Cookie

Nik*_*iko 6 cookies android webview

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

我这样做:

  1. 在应用程序创建CookieSyncManager和创建实例CookieManager
  2. sCookieManager.setAcceptCookie(true);在util类中调用静态部分
  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....)"
Run Code Online (Sandbox Code Playgroud)

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

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

Dee*_*orn 2

尝试使用不

sCookieManager.setCookie(url, value) 
Run Code Online (Sandbox Code Playgroud)

sCookieManager.setCookie(cookieDomain, value)
Run Code Online (Sandbox Code Playgroud)

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

工作示例:

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);
Run Code Online (Sandbox Code Playgroud)