【问题标题】:NodeJs Passport performs CORS pre-flight if request comes from VueJS如果请求来自 VueJS,NodeJs Passport 执行 CORS 飞行前
【发布时间】:2018-05-19 15:28:44
【问题描述】:

我正在编写一个使用 Passport 和 Saml-Stategy 的 NodeJS / Express 后端。我使用外部身份提供程序和 VueJs 作为前端。

如果我从浏览器(Chrome + IE)向后端发出 API 请求,一切正常。请求进入后端,作为 GET 请求进入 IdP,然后通过身份验证返回。

但是,如果我加载执行相同请求的 VueJs 应用程序,则护照会发出一个 CORS 飞行前 (OPTIONS) 请求,该请求从 IdP 返回为 404,因为不支持 OPTIONS。我试过Vue-Resource和Axios,结果都一样。

很遗憾,我无法更改 IdP 上的任何设置。但是为什么我在后端的护照对请求的处理方式不同呢?有任何想法吗?

我比较了来自 API 调用和 VueJ 的请求标头,但我找不到任何会导致预检的标头。

存储库:https://github.com/tmschbgr/NodePassportExample

版本:

  • 节点:8.9.0
  • 快递:4.16.2
  • 护照:^0.4.0
  • 护照-saml:^0.31.0
  • Vue:^2.4.4
  • Axios:^0.17.1

【问题讨论】:

    标签: javascript node.js cors passport.js axios


    【解决方案1】:

    我发现这是由于时间问题造成的。

    它使用以下逻辑:

    1. 请求到达后端,检查是否经过身份验证
    2. 如果没有,请转到 IdP 并返回。如果成功重定向到 /
    3. 在身份验证检查后提供静态文件。这样,只有在用户通过身份验证时,应用才会被提供。

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 1970-01-01
      • 2019-02-27
      • 2019-05-23
      • 2015-09-03
      • 2019-02-25
      • 2015-09-04
      • 2015-08-29
      • 2018-04-13
      相关资源
      最近更新 更多