【发布时间】:2015-08-10 10:06:54
【问题描述】:
我有一个 Angular 应用 (v1.13.15) 和 Express.js(v4.12.4) 作为后端。
我的后端有一个 DELETE 方法,并且我已经启用了对它的 CORS 支持。
但是,当我使用 Angular $http.delete 时,我遇到了这个错误
请求的资源上不存在“Access-Control-Allow-Origin”标头。
我尝试过使用 Jquery,$.ajax() 调用它,我遇到了同样的问题!
我也试过用 POSTMAN 做 DELETE 请求,没有问题。
但是,使用我的 Angular 访问我的 GET 和 POST 方法没有问题..
我可以知道这是什么问题吗?
我的后端网址 http://localhost:3000
我使用 gulp-webserver 服务我的 AngularJS http://localhost:8000
我的服务器代码
exports.deleteGPSData = (req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.header('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
let id = req.params.id;
res.send('here');
}
还有我的 Angular 代码
$http.delete(API_URL + '/gps/' + id)
.success(function(res) {
if (res.result !== 1) {
return defer.reject(new Error(id + ' failed to delete'));
}
defer.resolve(res.id);
})
.error(function(status) {
defer.reject(status);
});
我对 GET 和 POST 方法没有任何问题!只有当我使用 DELETE 方法时,我才遇到 CORS 错误!
我在下面附上了使用 Google Chrome 的请求标头的屏幕截图
下面是 Postman 的截图,
【问题讨论】:
-
尝试将
res.header('Access-Control-Allow-Headers', 'X-Requested-With,content-type');更改为res.header('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type');,如果这有任何改变,请告诉我。 -
您也可以发布您的快递代码吗?
-
@FrankerZ 我改了,还是出现了同样的问题。
-
@neolivz4ever 你想要哪一部分?我已经在这篇文章中发布了路由器中间件,如果你想要在中间件之前,那么它只是 app.delete('/gps/:id', routes.gps.deleteGPSData);
-
@FrankerZ 更新了邮递员的截图
标签: jquery angularjs node.js express cors