iOS>=11 上的 Safari 默认阻止 cookie 和网络存储 - 如何保留(第一方)数据?
Safari on iOS>=11 block cookies & web storage by default - how to persist (first-party) data?
在我们的应用中,我们会在用户首次访问时显示一条非常简单的 "onboarding" 消息。
我们依赖于 localStorage,当不支持使用 github.com/Acanguven/StorageService 时回退到 cookies。此数据是第一方,因为它是我们的 cookie,它们是为我们的网站设置的。不像广告技术或跨域 cookies/storage:例如,只是一种不向已经访问该网站的用户显示入职模式的简单方法。
这个东西在我的 iphone 上,它不起作用,当我们尝试创建那些 cookies/local 存储时,我们得到了一些 javascript "Security Error or Access denied"。
比如我们的一个数据是这样的:
if ( (window.StorageService.localStorage.getItem('user_already_saw_the_message') !== null) ) {
showMessage():
}
// If user never saw the message, show 1st msg almost immediately
else {
//do nothing
}
}
我检查了我的 iphone,确实它在 Apps>Safari 中说行块所有 cookie 已激活/"ON"。所以它甚至会阻止第一方 cookie(不像跨域或某些广告 cookie)。
所以我的问题有两个子部分:
评估 large/significant 问题在用户群中的表现:是我的 iphone 还是升级到 iOS11 的所有 iphone 用户] 很快就会升级到 iOS12 自动获得默认设置“所有 cookie 被阻止 = "ON" ?
如果问题 1 的答案是 "yes all users by default get this all cookies blocked setting",那么下面的问题就更加重要了,因为这意味着,考虑到 iOS 的市场份额,它会影响到一个巨大的数字用户:如果我们既不能使用 cookie 也不能使用 local/session 存储,您如何只保留 "only show this message once" 或 "only show this modal once every month" 之类的数据?
我做了一些阅读,发现了这个:
iOS11 does introduce a cookie storing prevention mechanism called
Intelligent Tracking Prevention but that affects only 3rd party
cookies. On iOs11, the default setting for Managing Cookies is Allow
cookies from current websites i.e. First party cookies.
所以你的应用应该没有问题。
它应该工作正常。参考:https://webkit.org/blog/7675/intelligent-tracking-prevention
在我们的应用中,我们会在用户首次访问时显示一条非常简单的 "onboarding" 消息。 我们依赖于 localStorage,当不支持使用 github.com/Acanguven/StorageService 时回退到 cookies。此数据是第一方,因为它是我们的 cookie,它们是为我们的网站设置的。不像广告技术或跨域 cookies/storage:例如,只是一种不向已经访问该网站的用户显示入职模式的简单方法。
这个东西在我的 iphone 上,它不起作用,当我们尝试创建那些 cookies/local 存储时,我们得到了一些 javascript "Security Error or Access denied"。
比如我们的一个数据是这样的:
if ( (window.StorageService.localStorage.getItem('user_already_saw_the_message') !== null) ) {
showMessage():
}
// If user never saw the message, show 1st msg almost immediately
else {
//do nothing
}
}
我检查了我的 iphone,确实它在 Apps>Safari 中说行块所有 cookie 已激活/"ON"。所以它甚至会阻止第一方 cookie(不像跨域或某些广告 cookie)。
所以我的问题有两个子部分:
评估 large/significant 问题在用户群中的表现:是我的 iphone 还是升级到 iOS11 的所有 iphone 用户] 很快就会升级到 iOS12 自动获得默认设置“所有 cookie 被阻止 = "ON" ?
如果问题 1 的答案是 "yes all users by default get this all cookies blocked setting",那么下面的问题就更加重要了,因为这意味着,考虑到 iOS 的市场份额,它会影响到一个巨大的数字用户:如果我们既不能使用 cookie 也不能使用 local/session 存储,您如何只保留 "only show this message once" 或 "only show this modal once every month" 之类的数据?
我做了一些阅读,发现了这个:
iOS11 does introduce a cookie storing prevention mechanism called Intelligent Tracking Prevention but that affects only 3rd party cookies. On iOs11, the default setting for Managing Cookies is Allow cookies from current websites i.e. First party cookies.
所以你的应用应该没有问题。 它应该工作正常。参考:https://webkit.org/blog/7675/intelligent-tracking-prevention