Beenden Sie die Freigabe von localStorage zwischen Servern hinter einem Reverse-Proxy (derselbe Ursprung gilt für alle).

508
Matt Muggeridge

Betrachten Sie zwei Backend-Server:

https://server1.example.com https://server2.example.com 

Wenn Sie direkt auf diese Server zugreifen, haben sie natürlich unabhängige localStorageObjekte, da ihre Herkunft unterschiedlich ist. In diesem Fall unterscheiden sich die Hostnamen.

Wenn ich diese Server hinter einem Reverse-Proxy platziere, wird wie folgt darauf zugegriffen:

https://proxy.example.com/server1 https://proxy.example.com/server2 

Um das Bild etwas zu komplizieren, habe ich eine Frontend-Seite in der proxy:

https://proxy.example.com 

Diese Frontend-Seite listet die Server als Hotlinks mit HTML-Code auf, ähnlich:

<a href="https://proxy.example.com/server1/" target="_blank">Server1</a> <a href="https://proxy.example.com/server2/" target="_blank">Server2</a> 

Nun, jeder des Servers proxy, server1und server2alle passieren den same-originTest, da sie jeweils haben origin=https://proxy.example.com:443. Folglich wird das localStorageObjekt unter ihnen geteilt und diese Freigabe verwirrt die Apps auf server1und server2.

Gibt es eine Möglichkeit die gemeinsame Nutzung von abzuschalten localStoragezwischen proxy, server1und server2in dieser Konfiguration?

Wenn nicht, gibt es Methoden in Javascript, mit denen die gemeinsame Nutzung dieser Entitäten deaktiviert wird?

0

1 Antwort auf die Frage

0
kicken

Soweit ich weiß, gibt es keine Möglichkeit, dass das Browsersegment localStorage auf etwas anderem als dem Ursprung basiert, und es gibt keine Möglichkeit, den Ursprung zu ändern, außer die URL zu ändern.

Wenn Sie Ihre gespeicherten Daten nach Standort segmentieren möchten, um Konflikte zu vermeiden, müssen Sie dies manuell tun, indem Sie jedem Standort einen eindeutigen Schlüssel zuweisen, unter dem er seine Daten speichern kann.

Wenn Sie verhindern möchten, dass server1 in den Speicher von server2 liest / schreibt, ist dies nicht möglich, ohne die Herkunft des Servers zu ändern.

Danke kicken, das bestätigt auch meinen Verdacht. Am Ende änderte ich die `localStorage`-Tasten mit dem Ersatzbefehl für den umgekehrten Proxy. Die Schlüssel sind also jetzt serverspezifisch. Ein Schlüssel namens "foo" wird jetzt vom Reverse-Proxy zu "server1_foo" und "server2_foo" subskribiert. Das Problem mit der Freigabe wurde behoben. Matt Muggeridge vor 6 Jahren 0