問題禁用它。本地存儲跨域Safari瀏覽器默認
它實現HTML5本地存儲空間: https://github.com/ofirdagan/cross-domain-local-storage
問題:
Safari不默認允許第三方Cookie(其他瀏覽器允許的話)。
Safari的隱私偏好:
默認爲: 「從網站允許我遊」。
我讀到這些設置:
始終阻止 - 阻止所有第一方Cookie和阻止所有第三方Cookie。
僅允許從當前網站上下載 - 允許所有的第一方cookie並阻止所有第三方cookie。
從網站我訪問允許 - 允許所有第一方Cookie和阻止所有第三方Cookie,除非該第三方是在同一時間,第一方(基於當前的cookies和瀏覽歷史記錄)。
始終允許 - 允許所有第一方cookie並允許所有第三方cookie。
解決方法我都試過:
本地存儲與一個iframe(像素) - 我覺得它不再適用於Safari瀏覽器 - Is there any workaround to set third party cookie in Iframe for safari?
我認爲,有一種方法可以在Safari上的第一方和第三方網站之間共享本地存儲。 (Facebook.com和Booking.com在不同的域之間共享數據)。
我成功地通過刪除API並自己編寫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?
任何幫助表示讚賞!在Safari 7+
不要混淆餅乾和本地存儲。這是不同的事情。根本不涉及本地存儲。因此,如果您使用本地存儲,Cookie處理策略不會導致本地存儲的任何問題。 – hindmost
我知道Cookies和本地存儲是不同的。但是,當我更改爲「始終允許」時,將從跨域讀取本地存儲。 我想本地存儲與「和網站數據」有關。 我可以給你一個例子..(將數據存儲在站點X的本地存儲中,然後轉到嘗試讀取數據的站點Y)。 –
在哪個Safari版本中這種行爲發生了變化? – mash