Rest POST、PUT和&;上的CORS错误;删除请求,但可以正常工作
我目前正在使用MERN堆栈构建一个应用程序,访问RESTAPI时遇到问题。它能够使用get请求获取数据,但写入数据似乎失败了 在声明路由之前,我有以下代码块:Rest POST、PUT和&;上的CORS错误;删除请求,但可以正常工作,rest,express,http-headers,cors,Rest,Express,Http Headers,Cors,我目前正在使用MERN堆栈构建一个应用程序,访问RESTAPI时遇到问题。它能够使用get请求获取数据,但写入数据似乎失败了 在声明路由之前,我有以下代码块: app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', 'https://staging.domain.io'); res.header('Access-Control-Allow-Methods', 'GET, OPTION
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'https://staging.domain.io');
res.header('Access-Control-Allow-Methods', 'GET, OPTIONS, PUT, POST, DELETE');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
res.header('Access-Control-Allow-Credentials', true);
next();
});
我在前端使用axios进行这些api调用,并将withCredentials属性设置为true
一些可能有用的注意事项:
我使用cookie会话(在CORS配置之前声明)在我的域和子域中共享我的cookie(以上代码)
这只是在我部署到GCP时失败的,它在本地主机上运行良好
到目前为止,我所尝试的:
使用express cors中间件包,配置如下:
app.use(
cors({
origin: 'https://staging.domain.io/',
credentials: true
})
);
app.options(
"*",
cors({
origin: 'https://staging.domain.io/',
credentials: true
})
);
似乎这段代码根本没有改变行为,因为无论代码是否放置,都没有什么不同。但是,如果我保留代码并从最顶端删除代码,整个api都会失败(甚至获取请求)
所以现在我有点纠结于如何解决这个问题。有什么建议吗
谢谢!经过几天的努力和大量的擦伤,我已经找到了错误的地方。对于cors包方法,origin属性不等于请求的头origin 请求标头:
- 来源:staging.domain.io
- 来源:staging.domain.io/
第一种方法(不使用cors)的问题仍然存在。浏览器在devtools控制台中记录的确切错误消息是什么?@sideshowbarker我收到此错误(已删除api请求路由):CORS策略已阻止从源“”访问位于“…”的XMLHttpRequest:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态。"您的评论中的错误消息表示服务器没有使用200 OK响应CORS预飞行,而是使用了一些HTTP错误代码。您可以使用浏览器devtools中的网络窗格查看服务器响应的HTTP错误代码。您还可以检查发送请求的API服务器上的服务器日志,并查看t服务器在响应返回的HTTP错误之前记录的消息。
app.use(
cors({
origin: 'https://staging.domain.io/',
credentials: true
})
);
app.options(
"*",
cors({
origin: 'https://staging.domain.io/',
credentials: true
})
);