$ http.delete返回错误而没有信息

时间:2015-05-29 06:39:36

标签: javascript angularjs http

我对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.

在postman中执行DELETE请求时(我的代码调用了同一个),我在响应中得到了这些标题:

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

我会说这些标题是正确的,我不应该得到这个错误。即使我这样做,错误对象也是null,因此根本没有显示任何信息。

更新15/06: 尝试使用PUT和DELETE时都会发生此问题。 POST和GET工作正常。在Chrome开发工具的网络标签中,我只能看到OPTIONS请求。在此请求中,Access-Control-Allow-Methods不存在(但在Postman中测试时它在PUT / DELETE中),即使在配置Apache配置以在每个响应中包含此标头之后也是如此。

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

可能导致此问题的原因是什么? OPTIONS请求是否还需要返回Access-Control-Allow-Origin标头?

非常感谢任何建议!

2 个答案:

答案 0 :(得分:2)

  

请求的资源

上没有'Access-Control-Allow-Origin'标头

您遇到Cross Domain问题,应该做的是从服务器端启用CORS

答案 1 :(得分:0)

What is cros issue and how to solve it

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

或试试这个$ httpProvider

并看到此链接Enabling CORS in Angular JS

value