iOS 11主屏幕应用发送错误的Cookie
自iOS 11以来,我们的一个web应用程序一直在运行,但只有在作为应用程序添加到主屏幕时才会出现问题 它允许脱机查看使用ApplicationCache清单缓存的用户所选语言的文档 当用户选择一种新语言时,问题就出现了 我们使用document.cookie将语言标记(即en_GB或de_de)持久化到cookie中,然后告诉appcache查找更新。服务器查看cookie中的语言标记,并发送特定于语言的cache.manifest文件 这是用户更改语言时的JSiOS 11主屏幕应用发送错误的Cookie,ios,cookies,safari,Ios,Cookies,Safari,自iOS 11以来,我们的一个web应用程序一直在运行,但只有在作为应用程序添加到主屏幕时才会出现问题 它允许脱机查看使用ApplicationCache清单缓存的用户所选语言的文档 当用户选择一种新语言时,问题就出现了 我们使用document.cookie将语言标记(即en_GB或de_de)持久化到cookie中,然后告诉appcache查找更新。服务器查看cookie中的语言标记,并发送特定于语言的cache.manifest文件 这是用户更改语言时的JS function setLan
function setLanguage(chosenLanguage) {
//...
this.setCookie("language", chosenLanguage, 10);
window.applicationCache.update();
}
this.setCookie使用document.cookie更改cookie值,过期时间以天为单位
这在台式机和移动设备上都能很好地工作,甚至在iOS11Safari上也可以
iOS 11上的主屏幕应用程序模式除外
通过在每次cookie更新时设置唯一ID,我们可以在Web Inspector控制台中检查在每个点设置的唯一ID,并将其与服务器接收到的ID进行比较
我们发现主屏幕应用程序正在向上发送Safari中创建的cookie。不是在主屏幕应用程序中使用document.cookie创建的。我们的任何请求都不会发送cookie
不仅如此,如果我们回到Safari浏览器版本并更改语言,然后切换回主屏幕应用程序,它会发送带有新语言的更新Safari cookie,但从document.cookie读取时仍会显示我们以前在应用程序中设置的数据
我想知道的是:还有其他人有这个问题吗?有人知道解决方法吗?是的,我相信我也有同样的问题。如果我在safari中加载我的应用程序并作为主屏幕应用程序,我发现来自safari的所有请求都伴随着safari cookie。但是,在使用主屏幕应用程序时,除清单文件外,所有请求都具有主屏幕cookie。当主屏幕应用程序请求清单时,它总是发送safari cookie,如果safari中没有cookie,则不发送cookie。我也在寻找解决办法。我希望苹果能修复这个错误。