Javascript 从资产目录中的HTML文件设置Android Webview cookies

Javascript 从资产目录中的HTML文件设置Android Webview cookies,javascript,android,cookies,webview,Javascript,Android,Cookies,Webview,我正在尝试在webview中使用javascript设置cookie。webview像这样从本地资产目录加载(其中页面是一个字符串,如“index.html”) 我发现当从web加载完全相同的文件时(即),相同的文件可以按预期设置cookie 旧版本的android确实允许在本地文件上创建cookie,但新版本不允许。我已经测试过了,它可以在三星Galaxy Ace、HTC Desire Z和lower SDK的eclipse模拟器上工作,但在三星SIII和三星Tab 10.1上都不工作 我需要

我正在尝试在webview中使用javascript设置cookie。webview像这样从本地资产目录加载(其中页面是一个字符串,如“index.html”)

我发现当从web加载完全相同的文件时(即),相同的文件可以按预期设置cookie

旧版本的android确实允许在本地文件上创建cookie,但新版本不允许。我已经测试过了,它可以在三星Galaxy Ace、HTC Desire Z和lower SDK的eclipse模拟器上工作,但在三星SIII和三星Tab 10.1上都不工作

我需要设置一个cookie,以便在我的webview页面之间传输数据;保存要重新显示的搜索结果

如果有人知道解决这些本地文件问题的方法/技巧,我真的很感激。我已经做了8个星期了。我问了一个类似的问题,这可能有助于进一步阅读,但问题现在已经确定,这是一个非常不同的问题,所以我在这里问这个问题


谢谢。

这不可能的原因在于通过本地主机实现cookie的安全限制。如果cookie设置是可能的,那么其他人也可以创建应用程序并读取您的应用程序cookie。这在早期版本的Android上曾经是可能的,但是安全漏洞后来被修补了

这就是传统web浏览器存在相同限制的原因

请参阅此相关问题和答案:

我一直在处理一个类似的用例,就像您描述的一样,下面是我采取的方法

  • 每当我需要直接在Cordova WebView上设置Cookie时(如文件方案Cookie):

  • 当JS库创建文件方案cookie(因为它们是从文件系统加载的)时,我需要在“本机”层获取这些值,我会使用:

    CookieManager.getInstance().getCookie("file://");
    
后者将返回所有文件方案cookie的长字符串,您可以将其拆分为一个数组并逐个解析


希望这能有所帮助。

我知道很久以前就有人问过这个问题,但您找到解决方案了吗?这个问题是由安全问题的修复引起的。允许任何应用程序在“localhost”域下存储cookie。这实际上意味着,任何人都可以创建一个应用程序,从同一个cookie商店进行读/写操作。因此,在更高版本的Android中,这被Android阻止。见我的类似问题:
CookieManager.getInstance().setCookie("/", "MyCookie=xxx");
CookieManager.getInstance().getCookie("file://");