Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ar galiu sinchronizuoti duomenis tarp skirtingų domenų skirtukų


Ar galiu sinchronizuoti duomenis tarp skirtingų domenų skirtukų


Ne, negalite tiesiogiai sinchronizuoti duomenų tarp skirtukų skirtinguose domenuose naudodami naršyklėje integruotus saugyklos įvykius ir mechanizmus, pvz., localStorage arba sessionStorage. „Saugyklos“ įvykis ir naršyklės saugyklos API yra apribotos tos pačios kilmės politikos, o tai reiškia, kad jos veikia tik tame pačiame domene.

Pagrindiniai apribojimai yra šie:

1. Tos pačios kilmės politika: „saugyklos“ įvykiui ir naršyklės saugyklos API (localStorage, sessionStorage) taikoma tos pačios kilmės politika. Tai reiškia, kad įvykis suaktyvinamas tik kituose skirtukuose / languose, kurie yra iš to paties domeno, o ne skirtinguose domenuose.

2. Kryžminis domenų ryšys: nėra integruoto naršyklės mechanizmo, leidžiančio tiesiogiai perduoti duomenų pasikeitimus tarp skirtukų ar langų skirtinguose domenuose. Tos pačios kilmės politika saugos sumetimais užkerta kelią tokiam tarpdomeniniam ryšiui.

Jei reikia sinchronizuoti duomenis tarp skirtukų ar langų skirtinguose domenuose, turėsite naudoti serverio sprendimą arba trečiosios šalies paslaugą, kuri gali veikti kaip tarpininkas. Kai kurios parinktys:

1. Serverio pusės sinchronizavimas: galite naudoti serverio mechanizmą, pvz., žiniatinklio lizdo ryšį arba bendrinamą duomenų bazę, kad paskleistumėte duomenų pakeitimus tarp skirtingų domenų.

2. Trečiosios šalies susirašinėjimo paslauga: galite naudoti trečiosios šalies susirašinėjimo paslaugą, pvz., „Firebase“, norėdami skelbti ir prenumeruoti duomenų pakeitimus skirtinguose domenuose.

3. Tinkintas kelių domenų ryšys: galite įdiegti tinkintą kelių domenų komunikacijos mechanizmą, pvz., naudodami HTML5 postMessage API kartu su tarpiniu iframe arba langu.

Tačiau šie sprendimai yra sudėtingesni ir reikalauja papildomos infrastruktūros arba trečiųjų šalių paslaugų. Integruota naršyklės saugykla ir įvykiai apsiriboja tik tos pačios kilmės ryšiu.

Apibendrinant galima pasakyti, kad negalite tiesiogiai sinchronizuoti duomenų tarp skirtingų domenų skirtukų naudodami naršyklės integruotą saugyklą ir įvykius. Norėdami sinchronizuoti duomenis tarp domenų, turėsite naudoti serverio arba trečiosios šalies sprendimą.

Citatos:
[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