Javascript $http.delete返回错误,不包含任何信息

Javascript $http.delete返回错误,不包含任何信息,javascript,angularjs,http,Javascript,Angularjs,Http,我对AngularJS和REST Web服务有一个奇怪的问题。 这是我的代码: $http.delete(appSettings['baseUrl'] + 'pricelistitem/' + article.itemNumber + '/' + article.acc) .error(function(e) { console.log(e); }); 调用此函数时,

我对AngularJS和REST Web服务有一个奇怪的问题。 这是我的代码:

$http.delete(appSettings['baseUrl'] + 'pricelistitem/' + article.itemNumber + '/' + article.acc)
                    .error(function(e) {
                        console.log(e);
                    });
调用此函数时,我收到一个错误,执行
.error
,但
e
对象为
null

在控制台中,我得到以下错误:

XMLHttpRequest cannot load <url>. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5000' is therefore not allowed access.
我想说这些标题是正确的,我不应该得到这个错误。即使我这样做了,错误对象也是空的,因此没有显示任何信息

更新15/06: 尝试使用PUT和DELETE时都会发生此问题。发布并获得良好的工作。在Chrome开发工具的网络选项卡中,我只能看到一个选项请求。在该请求中,
访问控制允许方法
不存在(但在Postman中测试时,它位于PUT/DELETE中),即使在配置Apache配置以在每个响应中包含此头之后也是如此

我已经在这个问题上工作了好几个小时,没有任何结果

是什么导致了这个问题?OPTIONS请求是否还需要返回Access Control Allow Origin标头

任何建议都将不胜感激

请求的资源上不存在“Access Control Allow Origin”标头

您正面临问题,您应该做的是从服务器端启用
CORS

从客户端,您必须在一段时间内设置这些值,或者尝试进行测试,以检查它是否是跨域错误或其他问题

或者试试这个$httpProvider

请看这个链接


我认为cors已启用,正如我们在标题输出上看到的那样,通过添加访问控制允许源代码:*已启用cors。此头文件对WS的其他部分起作用(尽管我知道这在生产中不推荐),但由于某些原因,此头文件对WS的其他部分不起作用。如何在服务器端添加头文件?这些头文件是在代码中添加的,由运行在AS/400系统上的后端程序员用RPG编写的。我对此一无所知,但这有关系吗?毕竟,它们都包含在响应中,对吗?从您提供的这些标题中可以使用Get、POST或PUT,对吗?如果是这样,DELETE应该以角度或角度两种方式工作。另外,在开发ASP.NET时,我们有时需要在IIS中使用一些技巧。我只是想弄清楚这是否是后端问题。只有脚本启动的请求才会受到CORS的影响。因此,如果您面临与CORS相关的问题,那么在Postman中测试删除请求是完全无用的。您必须模拟飞行前请求。认真对待错误消息,问问自己为什么服务器不发送“访问控制允许来源”标题。嗯,我真的不知道。无论是否发生错误,服务器都会返回该标头。第一个可能的问题是服务器没有在
OPTIONS
请求中添加该标头。另一个原因可能是头不是添加在来自
localhost
的请求上,就是只添加在来自特定主机的请求上。尝试使用邮递员发送
OPTIONS
请求,包括标题
来源:http://localhost:5000
appSettings['baseUrl']
是否指向您自己的域?您是否执行过
console.log(appSettings['baseUrl'])
或其他方式确认它返回了一个值?是的,这非常好。我在项目中的任何地方都使用该常量,控制台报告调用了正确的URL。我应该在哪里添加此代码,为什么需要它?是的,当使用插件避免CORS错误时,它工作正常。请参阅此链接和ajax cros issue@Bv202首先尝试chrome应用程序。它将清除您的疑问,如果它工作正常,则您必须设置回答中提到的上述值
Access-Control-Allow-Methods → GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin → *
Content-Length → 2
Content-Type → application/json
Date → Fri, 29 May 2015 06:26:00 GMT
X-Powered-By → IBM i
$httpProvider.defaults.headers.get = { 'Access-Control-Allow-Origin': '*' };
$httpProvider.defaults.headers.get = { 'Access-Control-Request-Headers': 'X-Requested-With, accept, content-type' };
$httpProvider.defaults.headers.get = { 'Access-Control-Allow-Methods': 'GET, POST' };
$httpProvider.defaults.headers.get = { 'dataType': 'jsonp' };