我对AngularJS和REST网络服务有一个奇怪的问题。这是我的密码:
$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中执行删除请求时(我的代码会调用相同的请求),我将在响应中获得以下标题:
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
我会说这些标题是正确的,我不应该得到这个错误。即使我这样做了,错误对象也是空的,因此根本不显示任何信息。
更新15/06:在尝试使用PUT和DELETE时都会出现此问题。邮寄和工作很好。在Chrome的“网络”选项卡中,我只能看到一个选项请求。在此请求中,Access-Control-Allow-Methods
不存在(但在Postman中测试时它在PUT/DELETE中),即使在配置了Apache以在每个响应中包含此头之后也是如此。
我在这个问题上工作了几个小时,但没有结果。
是什么导致了这个问题?选项请求还需要返回访问控制-允许-原产地标头吗?
任何建议都将不胜感激!
发布于 2015-05-29 06:44:36
请求的资源上没有“访问-控制-允许-源”头。
您正面临着交叉域问题,您应该做的是从服务器端启用CORS
。
https://stackoverflow.com/questions/30522760
复制相似问题