いいえ、ブラウザーの組み込みストレージ イベントや localStorage や sessionStorage などのメカニズムを使用して、異なるドメインのタブ間でデータを直接同期することはできません。 「ストレージ」イベントとブラウザのストレージ API は、同一生成元ポリシーに制限されています。つまり、同じドメイン内でのみ機能します。
主な制限は次のとおりです。
1. 同一オリジン ポリシー: 「storage」イベントとブラウザのストレージ API (localStorage、sessionStorage) は、同一オリジン ポリシーの対象となります。これは、イベントが異なるドメイン間ではなく、同じドメインにある他のタブ/ウィンドウでのみトリガーされることを意味します。
2. クロスドメイン通信: 異なるドメインにまたがるタブまたはウィンドウ間でデータの変更を直接通信する組み込みのブラウザ メカニズムはありません。同一オリジン ポリシーは、セキュリティ上の理由から、この種のクロスドメイン通信を防止します。
異なるドメインにまたがるタブまたはウィンドウ間でデータを同期する必要がある場合は、サーバー側のソリューションまたは仲介者として機能するサードパーティのサービスを使用する必要があります。いくつかのオプションは次のとおりです。
1. サーバー側の同期: Web ソケット接続や共有データベースなどのサーバー側のメカニズムを使用して、異なるドメイン間でデータの変更を伝達できます。
2. サードパーティ メッセージング サービス: Firebase などのサードパーティ メッセージング サービスを使用して、さまざまなドメイン間でデータ変更を公開およびサブスクライブできます。
3. カスタム クロスドメイン通信: HTML5 postMessage API を中間 iframe またはウィンドウと組み合わせて使用するなど、カスタム クロスドメイン通信メカニズムを実装できます。
ただし、これらのソリューションはより複雑であり、追加のインフラストラクチャまたはサードパーティ サービスが必要です。組み込みのブラウザー ストレージとイベントは、同一オリジン通信のみに制限されます。
要約すると、ブラウザーの組み込みストレージとイベントを使用して、異なるドメインのタブ間でデータを直接同期することはできません。クロスドメインのデータ同期を実現するには、サーバー側またはサードパーティのソリューションを使用する必要があります。
引用:[1] https://www.reddit.com/r/AZURE/comments/194hsdu/sync_files_with_customer_on_another_domain/
[2] https://www.sqlservercentral.com/forums/topic/set-up-database-sync-between-2- Different-domain-servers
[3] https://torsten-muller.dev/javascript/communication-between-browser-tabs-synchronizing-state/
[4] https://nabeelvalley.co.za/blog/2024/07-03/localstorage-based-sync/
[5] https://community.cisco.com/t5/managing-users/user-identities-with-ad-sync-and-multiple-domains/td-p/4880178