停止在反向代理后面的服务器之间共享本地存储(所有服务器都同源传递)

停止在反向代理后面的服务器之间共享本地存储(所有服务器都同源传递)

考虑两个后端服务器:

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

当直接访问这些服务器时,它们自然具有独立的localStorage对象,因为它们的来源不同;在这种情况下主机名不同。

当我将这些服务器置于反向代理之后时,它们的访问方式如下:

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

为了使图片稍微复杂一些,我有一个前端页面 proxy

https://proxy.example.com

该前端页面使用类似于以下内容的 HTML 将服务器列为热链接:

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

现在,每个服务器proxyserver1server2通过了same-origin测试,因为它们各自都有origin=https://proxy.example.com:443。因此,localStorage对象在它们之间共享,这种共享使server1和上的应用程序感到困惑server2

有没有办法在此配置中禁用、和localStorage之间的共享?proxyserver1server2

如果没有,Javascript 中是否存在可以禁用这些实体之间共享的方法?

答案1

据我所知,除了原点之外,没有其他方法可以让浏览器分段 localStorage,而且除了更改 URL 之外,没有其他方法可以更改原点。

如果您的目标是按站点对存储的数据进行分段以避免冲突,则必须手动执行此操作,为每个站点分配一些唯一的密钥,以便在该密钥下存储其数据。

如果您的目标是阻止 server1 读取/写入 server2 的存储,那么不更改服务器的来源就不可能实现。

相关内容