Alo*_*iel 14 javascript safari html5 cross-domain local-storage
问题:
我使用了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 - 是否有任何解决方法可以在iframe中为Safari设置第三方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);
}
}
});
Run Code Online (Sandbox Code Playgroud)
MainPage:
<iframe id="target" src="iframe.html" frameborder="1"></iframe>
<script>
var target = document .getElementById('target');
target.onload = function(){
target.contentWindow.postMessage('set', '*')
}
</script>
Run Code Online (Sandbox Code Playgroud)
那么有人知道如何通过更改一些API逻辑来支持Safari来实现它吗?
任何帮助赞赏!
归档时间: |
|
查看次数: |
8586 次 |
最近记录: |