由于CORS,我无法允许来自API服务器的DELETE
请求。
// enable CORS
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET", "PUT", "POST", "DELETE", "OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
next();
});
我收到控制台错误说:
XMLHttpRequest cannot load http://localhost:8080/api/users/57f5036645c04700128d4ee0. Method DELETE is not allowed by Access-Control-Allow-Methods in preflight response
如何启用DELETE
请求,就像GET
,PUT
和POST
请求一样?
答案 0 :(得分:17)
我在没有添加新包的情况下解决了它,只是添加了这一行
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE");
请注意,我在一个字符串中用逗号分隔了允许的方法。 完整的功能如下所示:
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
next();
});
答案 1 :(得分:4)
您的某个标题未正确设置,因此不是
res.header("Access-Control-Allow-Methods", "GET", "PUT", "POST", "DELETE", "OPTIONS");
把它作为
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
但是你是对的,使用npm包更简单。
答案 2 :(得分:0)
只需使用npm' cors包并通过简单替换来启用所有cors请求来解决它...
// enable CORS
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET", "PUT", "POST", "DELETE", "OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
next();
});
...与
app.use(require('cors')());
但是我仍然不确定魔法包的内容是如何做的。