【问题标题】:Why does react app has two local storages?为什么 react app 有两个本地存储?
【发布时间】:2023-03-05 08:15:01
【问题描述】:

我遇到了我的 React 应用程序的奇怪行为。由于某种原因,它有两个本地存储。一个在应用 IP,另一个在应用域。我怀疑这种情况正在发生,因为我通过 DNS 配置中的 URL 重定向记录使用http://[IP]/?1=2 将域设置为指向特定 IP 的子域。当我尝试使用localStorage.setItem('item', 'value') 设置存储项目时,应用程序不会选择它,因为(我认为是这种情况)它使用第二个存储,而浏览器默认使用第一个存储。另一个奇怪的方面是,当应用程序执行window.history.pushState(null, 'title', '?name=val') 时,它没有任何效果,而如果我从浏览器控制台执行相同操作,它工作正常 - URL 得到更新。在 localhost 上一切正常 - 只有一个存储空间,window.history 完成了它应该做的事情。

我该如何解决这个问题?可能是npm start 的一些配置?我尝试在package.json 中设置start: "PORT=80 HOST=subdomain.domain.com react-scripts start",但在这种情况下应用程序根本没有启动它。

欢迎任何想法。谢谢。

【问题讨论】:

  • 我觉得你的答案可能在stackoverflow stackoverflow.com/questions/65246615/…
  • 您所指的解决方案不适用,因为我不使用 Apache 或 Nginx,并且 domain.com/subdomain.domain.com 托管在不同的服务器上

标签: javascript reactjs dns


【解决方案1】:

浏览器在每个origin 的基础上分配local storage 存储。

http://[IP] 和http://subdomain.domain.com 是不同的来源,所以你有两个商店。

浏览器无法知道它所看到的不同来源的相同网站是同一个网站。


选择一个来源作为您实际使用的来源。

配置其他 URL 以重定向到您选择的那个。

不要在生产环境中使用 React 开发服务器。 Build the app and then deploy it.

【讨论】:

  • 关于如何只指定一个来源的任何建议?
  • "配置其他 URL 以重定向到您选择的那个。"
  • 我将不胜感激有关如何执行重定向的建议。我尝试使用 if(req.ip = "[IP]") res.redirect("http://subdomain.domain.com") 在 expressjs 端进行此操作,但由于某种原因它不起作用
猜你喜欢
  • 2020-12-21
  • 1970-01-01
  • 2013-07-21
  • 2010-10-05
  • 2020-08-14
  • 2016-12-13
  • 2020-09-18
相关资源
最近更新 更多