没有使用Crosswalk为cordova android应用程序编码cookie值的问题

时间:2017-01-05 06:28:46

标签: android cordova crosswalk android-cookiemanager xwalkview

SETUP

目前,我有一个cordova android应用程序,它使用crosswalk作为webview而不是默认的chrome浏览器。应用程序本身在登录期间访问AuthProvider,并且从AuthProvider传回的cookie存储在Android的CookieManager中。

我已经验证我能够通过域检索特定于该authprovider的Cookie。

问题

对于简单的情况,当cookie的值不包含“=”符号时,一切都很完美。我能够更新甚至使cookie无效。但是,我注意到当Auth Provider返回一个值为“=”的cookie时(例如,Cookie string =“AuthCookie = a = b = c = d”,其中AuthCookie是cookie名称,值为“ a = b = c = d“。当发生这种情况时,”a = b = c = d“是一个无效的cookie值,当它没有被编码时。结果,CookieManager的方法(setCookie)不起作用。没有办法更新甚至使该cookie无效。

有趣的是,你的cookieManger甚至不会让你设置一个值为“a = b = c = d”的cookie。问题是我认为cookie值是由浏览器设置的,该浏览器解释来自authprovider的响应中的cookie并更新数据存储。但是,我认为它不会编码cookie值。

目标

真正的目标是我需要能够使通过AuthProvider Browser存储的特定cookie无效。

为cookieManager提供的功能

setCookie(< domain>,< cookiestring>);

函数本身采用包含cookie名称和值的cookie字符串的问题。我只想要编码cookie值。唯一的问题是我不是AuthProvider如何在cookie商店中设置cookie。

我是否需要覆盖cookieManager设置方法?根据“;”解析所有cookie然后解析第一个“=”符号的所有cookie,然后在右侧编码所有内容?

我也不知道浏览器调用的cookieManager:setCookie()是否存储了auth provider响应?我不相信这是因为setCookie(域名,“auth = a = b = c = d”)不起作用。至少使用XWalkCookieManager

还是有另一种方法可以更新或使“auth = a = b = c = d”的cookies字符串无效。当我尝试“setCookie(domain,”auth = super“)时,不会抛出任何异常。然后我将调用getCookie(domain)并返回null。在XWalkCookieManager中抛出UnsupportedOperationException,结果返回null。没有源代码所以我无法深入研究为什么抛出unsupportedOperationException。

有关如何解决此问题或解决方法的任何建议? 谢谢, 德里克

1 个答案:

答案 0 :(得分:0)

我想出了这个问题。它必须处理我正在使用的cordova插件crosswalk webview版本。

破碎版:cordova-plugin-crosswalk-webview 1.8.0“Crosswalk WebView Engine” 工作版本:cordova-plugin-crosswalk-webview 2.2.0“Crosswalk WebView Engine”

实际上,这只解决了无法在cookie值中设置嵌套值的问题。

有时使用Auth提供商的Cookie,您仍然无法准确地使Cookie无效。不确定解决方案是什么。