Локальное хранилище между страницами в одном домене, но с использованием разных портов
Я пытаюсь использовать локальное хранилище на разных страницах в одном домене, но по какой-то причине Firefox создает несколько экземпляров одних и тех же данных хранилища на страницах, если они используют разные порты. Так что если я поставлю что-то для www.example.com:80 это не будет сохраняться, когда собирается www.example.com:8000, это создаст совершенно новую избыточную запись тех же данных. Как я могу исправить это и заставить его использовать ту же запись?
2 ответов
порты должны быть одинаковыми для работы правил origin. Единственный способ обойти это-прокси на стороне сервера.
определение происхождения:
две страницы имеют одинаковое происхождение, если протокол, порт (если один указано), и host одинаковы для обеих страниц.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript
для передачи токенов между приложениями я прибегал к использованию cookies:
установить cookie на стороне клиента app-001
<script>( function() { document.cookie = 'token=undefined; token_expires=Fri, 3 Aug 2020 20:47:11 UTC; path=/' } )();</script>
затем использовать куки на стороне клиента app-002
<script>( function() { console.log( document.cookie.replace(/(?:(?:^|.*;s*)token*=s*([^;]*).*$)|^.*$/, '') ); } )();</script>
затем, как только у вас есть cookie в любом приложении, добавьте его в localStorage, что немного упростит доступ к движению вперед.
<script>( function() { localStorage.setItem('token', document.cookie.replace(/(?:(?:^|.*;s*)token*=s*([^;]*).*$)|^.*$/, '') );); } )();</script>