在Android Webview中,可以通过以下代码解决XHR请求的新Cookie未持久化问题:
CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("http://") || url.startsWith("https://")) { CookieManager cookieManager = CookieManager.getInstance(); String cookie = //获取新的cookie,例如从服务器响应头获取 cookieManager.setCookie(url, cookie); return false; } //如果协议不是http或https,就交给系统处理 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; }
通过以上代码,Android Webview中的XHR请求的新Cookie就能够被正确地持久化了。