Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Czy mogę synchronizować dane pomiędzy kartami w różnych domenach?


Czy mogę synchronizować dane pomiędzy kartami w różnych domenach?


Nie, nie można bezpośrednio synchronizować danych pomiędzy kartami w różnych domenach, korzystając z wbudowanych w przeglądarkę zdarzeń i mechanizmów przechowywania, takich jak localStorage lub sessionStorage. Zdarzenie „storage” i interfejsy API pamięci przeglądarki są ograniczone do zasad tego samego pochodzenia, co oznacza, że ​​działają tylko w tej samej domenie.

Kluczowe ograniczenia to:

1. Zasady tego samego pochodzenia: Zdarzenie „storage” i interfejsy API pamięci przeglądarki (localStorage, sessionStorage) podlegają tej samej zasadzie pochodzenia. Oznacza to, że zdarzenie jest wyzwalane tylko w innych kartach/oknach pochodzących z tej samej domeny, a nie w różnych domenach.

2. Komunikacja między domenami: Nie ma wbudowanego mechanizmu przeglądarki umożliwiającego bezpośrednie komunikowanie zmian danych pomiędzy kartami lub oknami w różnych domenach. Polityka tego samego pochodzenia zapobiega tego rodzaju komunikacji między domenami ze względów bezpieczeństwa.

Jeśli chcesz synchronizować dane między kartami lub oknami w różnych domenach, musisz skorzystać z rozwiązania po stronie serwera lub usługi innej firmy, która może działać jako pośrednik. Niektóre opcje obejmują:

1. Synchronizacja po stronie serwera: Możesz użyć mechanizmu po stronie serwera, takiego jak połączenie z gniazdem internetowym lub współdzielona baza danych, aby propagować zmiany danych pomiędzy różnymi domenami.

2. Usługa przesyłania wiadomości innej firmy: Możesz korzystać z usługi przesyłania wiadomości innej firmy, takiej jak Firebase, w celu publikowania i subskrybowania zmian danych w różnych domenach.

3. Niestandardowa komunikacja między domenami: Możesz zaimplementować niestandardowy mechanizm komunikacji między domenami, taki jak użycie interfejsu API postMessage HTML5 w połączeniu z pośrednią ramką iframe lub oknem.

Rozwiązania te są jednak bardziej złożone i wymagają dodatkowej infrastruktury lub usług stron trzecich. Wbudowana pamięć przeglądarki i zdarzenia są ograniczone wyłącznie do komunikacji tego samego źródła.

Podsumowując, nie można bezpośrednio synchronizować danych pomiędzy kartami w różnych domenach, korzystając z wbudowanej pamięci i zdarzeń przeglądarki. Aby uzyskać synchronizację danych między domenami, konieczne byłoby użycie rozwiązania po stronie serwera lub rozwiązania innej firmy.

Cytaty:
[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-różne-domain-servers
[3] https://torsten-muller.dev/javascript/komunikacja-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