考虑两个后端服务器:
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>
现在,每个服务器proxy
和server1
都server2
通过了same-origin
测试,因为它们各自都有origin=https://proxy.example.com:443
。因此,localStorage
对象在它们之间共享,这种共享使server1
和上的应用程序感到困惑server2
。
有没有办法在此配置中禁用、和localStorage
之间的共享?proxy
server1
server2
如果没有,Javascript 中是否存在可以禁用这些实体之间共享的方法?
答案1
据我所知,除了原点之外,没有其他方法可以让浏览器分段 localStorage,而且除了更改 URL 之外,没有其他方法可以更改原点。
如果您的目标是按站点对存储的数据进行分段以避免冲突,则必须手动执行此操作,为每个站点分配一些唯一的密钥,以便在该密钥下存储其数据。
如果您的目标是阻止 server1 读取/写入 server2 的存储,那么不更改服务器的来源就不可能实现。