- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
问题:
我用过Ofir Dagan的github项目:Storing cross domain local storage。
它实现了html5本地存储: https://github.com/ofirdagan/cross-domain-local-storage
问题:
Safari 默认不允许第三方 cookie(其他浏览器允许)。
Safari 隐私偏好是:
默认是:“允许我访问的网站”。
我阅读了这些设置:
始终阻止 - 阻止所有第一方 cookie 并阻止所有第三方 cookie。
仅允许来自当前网站 - 允许所有第一方 cookie 并阻止所有第三方 cookie。
允许我访问的网站 - 允许所有第一方 cookie 并阻止所有第三方 cookie,除非该第三方曾经是第一方(基于当前 cookie 和浏览历史)。
始终允许 - 允许所有第一方 cookie 并允许所有第三方 cookie。
我尝试过的解决方案:
带有 iframe(像素)的本地存储 - 我认为它不再适用于 Safari - Is there any workaround to set third party cookie in Iframe for safari?
我认为有一种方法可以在 Safari 上的第一方和第三方站点之间共享本地存储。 (Facebook.com 和 Booking.com 在不同域之间共享数据)。
我是通过去掉API自己写成功实现的,但是不想去掉API自己实现(希望有一个小的修复可以支持Safari) :
Iframe.html
:
window.addEventListener('cors_event', function(event) {
if(event.event_id === 'my_cors_message'){
if (event.data.options.funcName == "SetItem") {
localStorage.setItem(event.data.options.key, event.data.options.value);
}
else if (event.data.options.funcName == "GetItem") {
return localStorage.getItem(event.data.options.key);
}
}
});
主页:
<iframe id="target" src="iframe.html" frameborder="1"></iframe>
<script>
var target = document .getElementById('target');
target.onload = function(){
target.contentWindow.postMessage('set', '*')
}
</script>
那么有人知道如何通过更改一些 API 逻辑来支持 Safari 来实现它吗?
感谢任何帮助!
最佳答案
如 Cross-Storage library documentation 所述:
Notes on Safari 7+ (OSX, iOS)
All cross-domain local storage access is disabled by default with Safari 7+. This is a result of the "Block cookies and other website data" privacy setting being set to "From third parties and advertisers". Any cross-storage client code will not crash, however, it will only have access to a sandboxed, isolated local storage instance. As such, none of the data previously set by other origins will be accessible. If an option, one could fall back to using root cookies for those user agents, or requesting the data from a server-side store.
关于javascript - 本地存储跨域 - Safari 默认禁用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584273/
我是一名优秀的程序员,十分优秀!