本地蒸气项目的预检请求(选项)失败

Preflight requests (OPTIONS) failing for local vapor project

我使用 Vapor 框架创建了一个用 Swift 编写的基本后端。我在我的机器上本地 运行 它,所以可以在 http://localhost:8080.
到达它 对于我正在从事的项目,我也在构建前端,它是使用 ReactJS 构建的,可以在 http://localhost:3000.

访问

Postman 中调用我的后端时,使用以下信息,请求工作正常并且在数据库中创建了用户:

方法
POST/用户

Headers
Content-Type: application/json 接受:application/json

Body

{
    email: "email@example.com
    password: "12345"
}

现在,当从本地前端使用相同的 body 和 headers 调用相同的方法时,我的请求立即失败,没有任何响应:

当我检查响应时,我发现所有 body 和 headers 都已正确发送,但没有响应。
我在谷歌上搜索了一下,意识到 Postman(及类似的)的行为与浏览器不同,我应该检查该方法是否适用于 OPTIONS,而不是 POST。我再次调用了该方法:OPTIONS /user,它在 Postman 中也失败了:

唯一的区别是,在 Postman 中,我收到的回复是 "Result not found",如您在屏幕截图中所见。

我想,这可能与 API 调用的 url 中的 localhost 有关,因为前端也在本地主机上 运行。所以我使用 ngrok 转发我的端口 8080(后端),然后调用 *.ngrok.io url,而不是 localhost:8080。运气不好。
我还尝试使用我机器的网络 IP 地址,而不是 localhost。仍然没有运气。

我该怎么办?

如果您按如下方式配置后端的 CORS 设置,它应该可以工作:

蒸汽 4

let corsConfiguration = CORSMiddleware.Configuration(
    allowedOrigin: .all,
    allowedMethods: [.GET, .POST, .PUT, .OPTIONS, .DELETE, .PATCH],
    allowedHeaders: [.accept, .authorization, .contentType, .origin, .xRequestedWith, .userAgent, .accessControlAllowOrigin]
)
app.middleware.use(CORSMiddleware(configuration: corsConfiguration))


蒸汽 3

let corsConfiguration = CORSMiddleware.Configuration(
    allowedOrigin: .all,
    allowedMethods: [.GET, .POST, .PUT, .OPTIONS, .DELETE, .PATCH],
    allowedHeaders: [.accept, .authorization, .contentType, .origin, .xRequestedWith, .userAgent, .accessControlAllowOrigin]
)
middlewares.use(CORSMiddleware(configuration: corsConfiguration))
services.register(middlewares)