让我们为cookie存储做好准备:
CookieSyncManager.createInstance(getApplicationContext());
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().setAcceptCookie(true);
然后我手动添加一些cookies,比如PHPSESSID
和RANDOM
CookieManager.getInstance().setCookie("domain.com", "PHPSESSID="+phpSession);
CookieManager.getInstance().setCookie("domain.com", "RANDOM="+random);
让我们使用以下命令检查它是否正常工作:
CookieManager.getInstance().getCookie("domain.com");
并得到了
PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56; RANDOM=266284790:1466147978:c91d0896bac59e0b
一切看起来都很好,但当我在可能的应用程序中导航到WebView
活动之一时,它正在打开相同的域名网站并设置cookie,然后当我像上面那样打印cookie时,它看起来是这样的:
PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56;
RANDOM=266284790:1466147978:c91d0896bac59e0b;
PHPSESSID=9ecb5156cf8fc3190fbc69fd13393243;
RANDOM=265078219%3A1463147975%3Ad0448d163e9b2123
重复的条目...在此之后,我再次手动设置,例如使用setCookie
进行随机设置
PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56;
RANDOM=111111111:2222222222:33333336bac59e0b;
PHPSESSID=9ecb5156cf8fc3190fbc69fd13393243;
RANDOM=265078219%3A1463147975%3Ad0448d163e9b2123
由WebView
设置的值不会被覆盖,只有我的“手动”输入...如何强制WebView
使用我之前设置的cookie或覆盖已设置的cookie?
发布于 2016-11-03 23:47:00
与在the MDN docs about Set-Cookie
中一样,您可以看到许多不同种类的Cookie值,可以将cookie设置为特定的Path
cookie名称=cookie值;路径=路径值
在CookieManager.setCookie
void setCookie (String url, String value)
中,android reference说:
为给定的URL设置cookie。具有相同主机、路径和名称的任何现有cookie都将替换为新cookie。如果设置的cookie已过期,将忽略该cookie。
在我看来,您有重复条目的原因是因为Cookie值在不同的Path
中。因此,如果您想要覆盖,则应确保主机路径名相同。
发布于 2016-05-14 19:08:12
private void setCookieManager(String auth_token) {
CookieSyncManager manager = CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
cookieManager.setCookie(auth_token);
manager.sync();
}
我想你只是没有正确设置你的cookie管理器。试一试
https://stackoverflow.com/questions/37212425
复制相似问题