我的问题是WebView
处理重定向和自定义Cookie。
我做了以下事情:
CookieSyncManager
和CookieManager
的实例
sCookieManager.setAcceptCookie(true);
sCookieManager.setCookie(url, value);
sCookieSyncManager.sync();
mWebView.loadUrl
服务器端发生的事情是它首先获取我设置的正确cookie,运行一些重定向并且cookie似乎丢失了。任何想法,我在这里做错了什么?
我已经尝试在另一个线程中运行setCookie
- sync
然后loadUrl
,但它没有帮助。
所有类似的帖子似乎都有不起作用的解决方案。
感谢。
更新:
我注意到使用setCookie
来提供多个Cookie,例如:
setCookie("MyCookie=value; Domain=mydomain.com; Path=/; Secure; HttpOnly; MySecondCookie=value2....)"
只应用第一个,然后当服务器在其自己的域上运行重定向时它就消失了。 此问题可以在循环中一次修复设置自定义Cookie。
我已在handler.proceed();
暂时添加了onReceivedSslError
,我可以从日志中看到它在网站重定向之前触发并且Cookie在下一页onPageFinished
中丢失,是否会有安全cookie和无效证书链之间的某些联系?
答案 0 :(得分:2)
尝试不使用
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);