我目前正在另一个域上的Restful API上使用Angular DELETE
尝试ngResource
类型的请求。
GET
和PUT
工作正常。
DELETE
适用于Advanced Rest Client Chrome扩展程序,但在尝试使用Angular $resource
时无效。
我注意到发送的标头有不同之处,这两个是:
Access-Control-Request-Headers:accept
Access-Control-Request-Method:DELETE
当我尝试在Advanced Rest Client中添加这两个标头时,我在Chrome控制台中收到以下错误:
Refused to set unsafe header "Access-Control-Request-Headers"
Refused to set unsafe header "Access-Control-Request-Method"
最后,当我尝试使用Angular的DELETE
请求时,服务器(通常配置为接受跨域请求)发送以下响应(状态为200
,方法使用{{1 }}):
OPTIONS
但我收到错误:
Access-Control-Allow-Headers:*
Access-Control-Allow-Methods:*
Access-Control-Allow-Origin:*
Allow:PUT,DELETE
Cache-Control:private, must-revalidate
Connection:close
Content-Length:0
Content-Type:text/html; charset=UTF-8
Date:Thu, 12 Feb 2015 12:08:47 GMT
ETag:"d41d8cd98f00b204e9800998ecf8427e"
Server:Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/0.9.8o DAV/2 PHP/5.5.20
我怀疑第一个提到的两个标题是导致问题的原因。它们是问题,如果是,我怎么能删除它们?
如果可以提供帮助,我尝试配置XMLHttpRequest cannot load [URL]. Method DELETE is not allowed by Access-Control-Allow-Methods.
(如其他问题/答案中所示),目前看起来像这样:
$httpProvider
答案 0 :(得分:2)
您的服务器应为响应设置访问控制 - 允许 - 方法标头,而不是允许标头,如:
Access-Control-Allow-Methods:PUT,DELETE