CORS在响应中重定向时出错

时间:2017-03-30 11:39:30

标签: node.js rest express oauth cors

我正在尝试通过NodeJS + Express REST api使用OAuth 2对第三方API进行身份验证。我们通过ReactJS webapp

进行此操作

目前的流程是我们使用Fetch API从前端向我们的Express API发送请求,用户名为参数

此请求构建一个包含redirect_url的authUrl对象,然后以

响应
  

返回res.redirect(authUrl);

当我们直接从浏览器启动此端点时,我们会被重定向到第三方API,并在验证用户成功后进行身份验证。

但问题在于我们尝试从前端向此端点发送请求。 我们将CORS标头添加到我们的Express应用程序中,以便我们可以访问此端点,但它仍然给出了以下错误:

  

Fetch API无法加载我们的ENDPOINT 。从“我们的ENDPOINT ”重定向到“第三方API ”已被CORS政策阻止:请求需要预检,不允许遵循跨源重定向。

当我们只执行 res.json(authUrl)而不是 res.redirect(authUrl)时,我们会检索包含该URL的正确响应。但重定向似乎不起作用。

我们尝试了不同的标题,但似乎找不到合适的解决方案。

所以我们想知道res.redirect()处理请求的方式有何不同?我们是否正确实施了OAuth流程?我们需要特定的标题吗?

欢迎任何帮助!

我们的流程摘要:

  • 浏览器收到前端请求
  • 用户输入他的姓名并点击注册按钮
  • 我们的Rest API接收请求并构建身份验证网址
  • Rest API发送一个响应,将浏览器重定向到authurl。
  • 成功验证后,第三方会向Rest API的回调端点发送确认。
  • 通过确认,Rest API会向第三方API发送另一个请求。
  • Rest API使用令牌将响应发送回ReactJS应用程序。

0 个答案:

没有答案