【发布时间】:2021-05-16 05:29:19
【问题描述】:
我们的客户端应用程序在请求登录时会发送一个 CORS 问题。 API 失败并出现 CORS 错误:不允许预检通配符来源。这是一个 Post 请求。 我们已经开始与客户端共享 cookie,这个问题突然出现了。
我们添加了什么:
- 我们添加了 WithCredentials: true [客户端]
- 在服务器端,我们将 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