我对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标头?
非常感谢任何建议!
答案 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
的