【发布时间】:2020-05-22 01:31:21
【问题描述】:
上下文
我有一个包含两种客户端的快速服务器。
-
我的应用程序(React + graphql):我已经为这个客户端启用了凭据:
app.use(cors({ credentials: true, origin: "http://localhost:3000" }));我已经设置了这个,以便我可以从我的 gql 客户端接收与身份验证相关的 cookie。 第三方服务(通过我提供的 http 客户端)。这些请求可以来自任意数量的来源。
我不能对原点 (cors({origin: *})) 使用通配符运算符,因为这将允许任何网站使用我的用户的身份验证 cookie。但是,如果我不通过通配符运算符,则第三方客户端无法发出请求。
我已尝试在特定路由上启用通配符,但未成功。
问题
我可以为不同的来源设置不同的 cors 政策吗?
【问题讨论】:
-
“反应随机来源的应用程序”?你想在这里启用什么?您是否提供许多其他网站(您不知道)会使用的服务?如果它们是您自己的网站,您不会知道来源吗?
-
我的服务器为仪表板(我的应用程序)供电。我还编写了一个客户端,允许第三方从他们自己的 React 应用程序调用我的服务。 @jfriend00
-
这些凭据是什么?我想知道您是否可以通过其他方式传递它们?
-
@jfriend00 我的理解是我的应用程序的来源需要传递
credentials: true,以便它可以发送cookie。由于显而易见的原因,我无法将此来源设置为通配符。当上述策略到位时,当我尝试从模拟第三方反应应用程序发出请求时,会引发我遇到的错误。在文档中找不到解决方案