iOS 11主屏幕应用程序发送错误的Cookie

时间:2017-12-12 16:03:13

标签: ios cookies safari

自iOS 11以来,我们的一个网络应用程序一直在运行,但是当作为应用程序添加到主屏幕时

它允许为用户选择的语言离线查看使用ApplicationCache清单缓存的文档。

当用户选择新语言时会出现问题。

我们使用document.cookie将语言令牌(即en_GB或de_DE)保存到cookie,然后我们告诉appcache寻找更新。服务器查看cookie中的语言标记,并向下发送特定于语言的cache.manifest文件。

当用户更改语言时,这是JS

function setLanguage(chosenLanguage) {
 //...
 this.setCookie("language", chosenLanguage, 10);
 window.applicationCache.update();
}

this.setCookie 使用 document.cookie 更改Cookie值,以及以天为单位的到期时间。

这在桌面和移动设备上运行良好,即使在iOS 11 Safari上也是如此。

iOS 11上的主屏幕应用程序模式除外。

通过每次更新cookie时设置唯一ID,我们可以在Web Inspector控制台中查看每个点设置的唯一ID,并将它们与服务器收到的内容进行比较。

我们发现主屏幕应用程序正在发送在 Safari 中创建的Cookie。不是在主屏幕应用程序中使用document.cookie创建的那个。我们的任何请求都不会发送该cookie。

不仅如此,如果我们回到Safari浏览器版本并更改语言,然后交换回主屏幕应用程序,它会使用新语言发送更新的safari cookie,但仍然可以从document.cookie中读取显示我们之前在应用中设置的数据。

我想知道的是:是否有其他人遇到过这个问题,有没有人知道修复它?

0 个答案:

没有答案