【问题标题】:React won't call backend (Node) due to CORS error由于 CORS 错误,React 不会调用后端(节点)
【发布时间】:2021-05-16 05:29:19
【问题描述】:

我们的客户端应用程序在请求登录时会发送一个 CORS 问题。 API 失败并出现 CORS 错误:不允许预检通配符来源。这是一个 Post 请求。 我们已经开始与客户端共享 cookie,这个问题突然出现了。

我们添加了什么:

  1. 我们添加了 WithCredentials: true [客户端]
  2. 在服务器端,我们将 res.header 包含在几乎所有访问控制允许值中。它们都不是通配符。 (已添加屏幕截图)。

我们没有在任何 Header 中使用通配符,API 仍然会因不允许使用 CORS 通配符而引发此错误。

服务器端代码:

客户端 API 调用。:


更新:我们能够通过将 Allow origin 添加到我们正在使用的 CORS 库值(当服务器启动时)来解决此问题。如果未提供任何内容,CORS 库(我不知道如何以及为什么)会用“*”覆盖分配的 Origin。

app.use(cors({credentials: true, origin: 'http://localhost:3000'}))

【问题讨论】:

  • 您正在本地主机中设置安全 cookie。这可能是个问题。
  • 嘿@LakshyaThakur 感谢您的回复,但这似乎不是问题。我通过删除它进行检查,仍然得到相同的错误。此外,后端的方法执行甚至没有开始。
  • 嗯。我假设您的 accessControlResponse 函数是请求到来时触发的第一个中间件函数。
  • 嘿@LakshyaThakur 是的,我就是这样添加它的。我还尝试在 res.json 值之前对其进行硬编码。它仍然不起作用。我尝试从客户端删除“WithCredentials:true”部分,所以它得到了响应。 (但是,在这种情况下,cookie 不会被注册。)
  • 出于 A11Y 和移动设备的原因,请将文本作为文本而不是文本图像发布。大多数代码是文本。请将答案作为答案发布,而不是作为问题的一部分。

标签: node.js reactjs api security cors


【解决方案1】:

这可以通过允许使用我们的 CORS 库的来源来解决(当服务器启动时)。如果未提供任何内容,CORS 库(我不知道如何以及为什么)会用“*”覆盖分配的 Origin。

app.use(cors({credentials: true, origin: 'http://localhost:3000'}))

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2016-06-08
    • 2019-10-19
    • 1970-01-01
    • 2021-01-03
    相关资源
    最近更新 更多