【问题标题】:How to send data between two different port on one application如何在一个应用程序的两个不同端口之间发送数据
【发布时间】:2022-02-04 19:34:20
【问题描述】:

我正在使用 expressjs 库。它作为服务器在 localhost:8000 上工作,我正在用它显示静态页面。我的应用程序在 localhost:4200 上运行。我尝试在不同的端口页面上使用相同的 cookie 或 localStorage,但它不起作用。我怎样才能做到这一点?

【问题讨论】:

    标签: javascript express


    【解决方案1】:

    您可以通过仅在主应用程序中调用 localhost:8000 上的路由来做到这一点,并且由于它在两个不同的端口上工作,您可能会由于 Cors 政策而出错,因此您可以查看这些答案。 cors enable

    【讨论】:

      【解决方案2】:

      我认为您在这里尝试做的是在两个位置之间共享 cookie/本地存储。

      1. 您需要 2 个位置吗?我很确定您可以在同一个快速服务器上为您的应用提供服务。
      2. 如果您将 express 用于后端(不是前端),您可以在请求中传递所需的信息,包括 POST、GET、PATCH 等。请访问 google 以获取有关在客户端和服务器之间发送信息的更多信息.
      3. 如果两者都是前端,也许尽量不要那样做。如果有必要,您可以使用我上面提到的在服务器之间发送信息。

      希望这在某种程度上有所帮助。

      【讨论】:

      • 1.我试图在 localhost:4200 两者上运行,但它没有工作。其中一个是 Angular 项目,另一个是带有 expressjs 的静态页面,所以我无法在它们之间共享数据。 2.我在前端使用快递。 3.好的,我会试试的!谢谢。
      • 如果可行,请考虑将我的答案标记为正确?
      【解决方案3】:

      当您在不同的端口上工作时,如果 cookie 的“SameSite”属性设置为“Host Only”且域设置为“localhost”,则无论端口号如何,它们都将从两个域可见/可访问.

      正如@codingmaster 所说,如果是不同的域,你将不得不为不同的域实现 cors 管理..

      但是由于您拥有这两个应用程序,在生产过程中,一个可以在主域上,而另一个在子域上,那么您必须将 cookie 的 domain 属性设置为您的域,例如:example.comSameSite 属性可以保持 HostOnly 并且 cookie 可以访问

      【讨论】:

      • 这在生产环境中效果不佳,因为我认为它们将是实际的域。您可以使用 3rd-party cookie,但有些人会阻止它们(某些浏览器默认)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多