Javascript 如何使用express js路由器解决CORS重定向?

Javascript 如何使用express js路由器解决CORS重定向?,javascript,node.js,oauth-2.0,cors,http-redirect,Javascript,Node.js,Oauth 2.0,Cors,Http Redirect,我正在尝试实现OAuth2身份验证。当我尝试发送授权码时,出现以下错误: XMLHttpRequest无法加载链接1。 从link1重定向到link2 已被CORS策略阻止:请求需要飞行前,即 不允许跟随跨原点重定向 我的req/rsp如下所示: 概述: 请求URL:link1 请求方法:选项状态代码:204否 内容远程地址: 响应标题:HTTP/1.1 204无内容X-Powered-By:Express 访问控制允许来源:*访问控制允许方法: 获取、标头、放置、修补、发布、删除访问控制允许标

我正在尝试实现OAuth2身份验证。当我尝试发送授权码时,出现以下错误:

XMLHttpRequest无法加载链接1。 从link1重定向到link2 已被CORS策略阻止:请求需要飞行前,即 不允许跟随跨原点重定向

我的req/rsp如下所示:

概述: 请求URL:link1 请求方法:选项状态代码:204否 内容远程地址:

响应标题:HTTP/1.1 204无内容X-Powered-By:Express 访问控制允许来源:*访问控制允许方法: 获取、标头、放置、修补、发布、删除访问控制允许标头: 内容类型,会话ID日期:

请求头:选项/授权HTTP/1.1主机:主机连接: 保持活动访问控制请求方法:后原点:原点链接 用户代理:Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML, 如壁虎)铬/56.0.2924.76狩猎/537.36 访问控制请求头:内容类型,会话ID接受:/ Referer:origin\u链接/对话框接受编码:gzip、deflate、sdch、br 接受语言:en-US,en;q=0.8


可能您尚未将express配置为接受CORS请求

在一个小项目中,我必须在Express应用程序中配置CORS请求。我的代码是:

// Enable CORS
app.use((req, res, next) => {
   res.header('Access-Control-Allow-Origin', '*');
   res.header('Access-Control-Allow-Methods', 'GET,POST,DELETE');
   res.header('Access-Control-Allow-Headers', 'Origin, X-Requested With, Content-Type, Accept');
   next();
});
app
是对应于Express实例的变量

此外,我确实找到了一个npm包,用于将CORS请求设置为express应用程序,但我从未使用过它:

如果升级到Chrome 57,则不应再点击“请求需要飞行前,不允许执行跨原点重定向”错误。(该规范曾要求浏览器禁止从预检中执行以下跨源重定向,但后来被更改,并且在Chrome 56发布后,Chrome源代码被更新以符合当前规范要求。)感谢您的快速响应,但我已经尝试了所有这些,但仍然不起作用。我认为问题在于重定向,因为在CORS文档中,它说当状态代码为3xx时,只是拒绝连接,但我不知道如何解决它。好吧,我明白了,通常当你使用CORS时,这是因为你使用AJAX请求。所以你们可以做一个“假”重定向,所以不是express谁重定向,而是客户端的javascript。当客户端收到您的“假”重定向时,javascript会更改页面内容。