如果请求来自 VueJS,NodeJs Passport 执行 CORS pre-flight
NodeJs Passport performs CORS pre-flight if request comes from VueJS
我正在编写一个使用 Passport 和 Saml-Stategy 的 NodeJS/Express 后端。我正在使用外部身份提供者和 VueJs 作为前端。
如果我从浏览器 (Chrome + IE) 向后端发出 API 请求,一切正常。请求转到后端,作为 GET 请求转到 IdP,然后返回经过身份验证。
但是如果我加载执行相同请求的 VueJs 应用程序,passport 会发出 CORS pre-flight (OPTIONS) 请求,该请求从 IdP 返回为 404,因为不支持 OPTIONS。我试了 Vue-Resource 和 Axios,都是一样的结果。
很遗憾,我无法更改 IdP 上的任何设置。但为什么我的护照在后端对请求的处理方式不同?有任何想法吗?
我比较了来自 API 调用和 VueJs 的请求 headers,但我找不到任何会导致 pre-flight.
的 headers
存储库:https://github.com/tmschbgr/NodePassportExample
版本:
- 节点:8.9.0
- 快递:4.16.2
- 护照:^0.4.0
- Passport-saml: ^0.31.0
- Vue: ^2.4.4
- Axios: ^0.17.1
我发现这是由于时间问题引起的。
它按照以下逻辑工作:
- 请求到达后端,检查是否通过身份验证
- 如果没有,请转到 IdP 并返回。如果成功重定向到 /
- 在身份验证检查后提供静态文件。这样,只有在用户通过身份验证后,应用程序才会得到服务。
我正在编写一个使用 Passport 和 Saml-Stategy 的 NodeJS/Express 后端。我正在使用外部身份提供者和 VueJs 作为前端。
如果我从浏览器 (Chrome + IE) 向后端发出 API 请求,一切正常。请求转到后端,作为 GET 请求转到 IdP,然后返回经过身份验证。
但是如果我加载执行相同请求的 VueJs 应用程序,passport 会发出 CORS pre-flight (OPTIONS) 请求,该请求从 IdP 返回为 404,因为不支持 OPTIONS。我试了 Vue-Resource 和 Axios,都是一样的结果。
很遗憾,我无法更改 IdP 上的任何设置。但为什么我的护照在后端对请求的处理方式不同?有任何想法吗?
我比较了来自 API 调用和 VueJs 的请求 headers,但我找不到任何会导致 pre-flight.
的 headers存储库:https://github.com/tmschbgr/NodePassportExample
版本:
- 节点:8.9.0
- 快递:4.16.2
- 护照:^0.4.0
- Passport-saml: ^0.31.0
- Vue: ^2.4.4
- Axios: ^0.17.1
我发现这是由于时间问题引起的。
它按照以下逻辑工作:
- 请求到达后端,检查是否通过身份验证
- 如果没有,请转到 IdP 并返回。如果成功重定向到 /
- 在身份验证检查后提供静态文件。这样,只有在用户通过身份验证后,应用程序才会得到服务。