问题:
我使用了Ofir Dagan的Github项目:存储跨域本地存储。
它实现了html5本地存储:https://github.com/ofirdagan/cross-domain-local-storage
问题所在:
Safari默认情况下不允许第三方cookie(其他浏览器允许)。
Safari隐私设置为:
默认设置为:“仅允许来自我访问的网站”。
我阅读了有关这些设置的信息:
始终阻止 - 阻止所有第一方cookie和所有第三方cookie。
仅允许当前网站 - 允许所有第一方cookie并阻止所有第三方cookie。
允许我访问的网站 - 允许所有第一方cookie,并阻止所有第三方cookie,除非该第三方曾经是第一方(基于当前cookie和浏览历史记录)。
始终允许 - 允许所有第一方cookie并允许所有第三方cookie。
我尝试过的解决方法:
使用iframe(像素)进行本地存储 - 我认为在Safari上已经不再起作用 - 有没有办法在Safari中为Iframe设置第三方cookie的解决方法?
我认为在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);
}
}
});
MainPage:
<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吗?
非常感谢任何帮助!