gpt4 book ai didi

Android WebView 在重定向中丢失 Cookie

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:33 24 4
gpt4 key购买 nike

我的问题是 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 和无效证书链之间是否存在某种联系?

最佳答案

尝试不使用

sCookieManager.setCookie(url, value) 

但是

sCookieManager.setCookie(cookieDomain, value)

例如,您可以使用 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);

关于Android WebView 在重定向中丢失 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20471107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com