問題ことによってそれを無効にします。 https://github.com/ofirdagan/cross-domain-local-storageローカルストレージクロスドメインSafariはデフォルト
問題:
のSafariはデフォルトでサードパーティのCookieを(他のブラウザがそれを許可)を許可しません
はそれはHTML5のローカルストレージを実装しています。
Safariのプライバシー設定は以下のとおりです。
デフォルトは次のとおりです。 "私が訪問ウェブサイトからの許可します"。
私は、これらの設定について読み:
常にブロック - ブロックすべてのファーストパーティのクッキーを、すべてのサードパーティのCookieをブロックします。
現在のウェブサイトからのみ許可 - 第1者のすべてのCookieを許可し、すべての第三者のCookieをブロックします。
は私が訪問ウェブサイトから許可 - すべてのファーストパーティのCookieを許可し、その第三者が一度に最初のパーティーだった場合を除き、すべてのサードパーティのCookieをブロック(現在のクッキーや閲覧履歴に基づきます)。
常に許可 - ファーストパーティのすべてのCookieを許可し、すべての第三者のCookieを許可します。
ソリューション私は試してみました:
のiframe(ピクセル)とローカルストレージ - Is there any workaround to set third party cookie in Iframe for safari?
私がいることを考える - 私はもはやSafariで動作すると思うんSafari上で第1者と第三者のサイト間でローカルストレージを共有する方法があります。 (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>
誰かがSafariをサポートするためにいくつかのAPIロジックを変更することで、どうすれば達成できるのか分かりますか?
サファリ7+(OSX、iOS版)の
クロスブラウザのローカルストレージのためのシンプルなAPIを公開しています。それは別のものです。 Cookieはローカルストレージにはまったく関係ありません。したがって、ローカルストレージを使用する場合、クッキー処理ポリシーはローカルストレージに問題を引き起こすことはありません。 – hindmost
私は、Cookieとローカルストレージが異なることを知っています。しかし、私が「常に許可する」に変更すると、ローカルストレージはクロスドメインから読み込まれます。 ローカルストレージは「and website data」に関連していると思います。 私はあなたにそれの例を送ることができます。(サイトXのローカルストレージにデータを格納し、次にデータを読み込もうとするサイトYに移動します)。 –
このSafariのバージョンはどのように変更されましたか? – mash