Javascript 如果请求来自VueJS,NodeJs Passport将执行CORS飞行前检查

Javascript 如果请求来自VueJS,NodeJs Passport将执行CORS飞行前检查,javascript,node.js,cors,passport.js,axios,Javascript,Node.js,Cors,Passport.js,Axios,我正在编写一个NodeJS/Express后端,它使用带有Saml策略的Passport。我使用外部身份提供程序和VueJs作为前端 如果我从浏览器(Chrome+IE)向后端发出API请求,一切正常。请求进入后端,作为GET请求进入IdP,并通过身份验证返回 但是,如果我加载执行相同请求的VueJs应用程序,passport会发出一个CORS飞行前(选项)请求,该请求将作为404从IdP返回,因为不支持选项。我尝试了Vue Resource和Axios,两者的结果都是一样的 很遗憾,我无法更改

我正在编写一个NodeJS/Express后端,它使用带有Saml策略的Passport。我使用外部身份提供程序和VueJs作为前端

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

但是,如果我加载执行相同请求的VueJs应用程序,passport会发出一个CORS飞行前(选项)请求,该请求将作为404从IdP返回,因为不支持选项。我尝试了Vue Resource和Axios,两者的结果都是一样的

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

我比较了API调用和VueJs中的请求头,但我找不到任何会导致预飞行的头

存储库:

版本:

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

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

它使用以下逻辑:

  • 请求到达后端,检查是否经过身份验证
  • 如果没有,请转到IdP并返回。如果成功,则重定向到/
  • 在身份验证检查后提供静态文件。这样,应用程序只有在用户通过身份验证后才能得到服务