我正在尝试使用 Angular(版本 1.0.5)Web 应用程序中的应用程序密钥和令牌来练习 Trello API。服务器似乎已正确配置来处理CORS http://en.wikipedia.org/wiki/Cross-origin_resource_sharing。测试请求http://test-cors.org http://test-cors.org from 启用cors http://enable-cors.org/按预期工作。
当我在我的一个角度控制器中发出发布请求时:
$http.post(url).success(function(data) {
$scope.server_resp = data;
});
I get a Access-Control-Allow-Headers 不允许请求标头字段 Content-Type错误。 (尽管如此,如下所示,Access-Control-Allow-Origin 设置为“*”)。为什么要添加此标头以及可以将其删除吗?
XMLHttp请求
当我使用原始 XMLHttpRequest 发出相同的请求时,它会成功。以下是 XMLHttpRequest 的标头:
Request Method:POST
Status Code:200 OK
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:0
Host:api.trello.com
Origin:http://192.168.0.125:9000
Referer:http://192.168.0.125:9000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
Response
Access-Control-Allow-Methods:GET, PUT, POST, DELETE
Access-Control-Allow-Origin:*
Cache-Control:max-age=0, must-revalidate, no-cache, no-store
Content-Length:563
Content-Type:application/json
Date:Mon, 18 Mar 2013 02:49:37 GMT
Expires:Thu, 01 Jan 1970 00:00:00
X-Powered-By:Express
X-Server-Time:1363574977568
角度 $http.post
以下是角度发起的请求的标头。请注意,浏览器发出了飞行前 OPTIONS 请求:
Request Method:OPTIONS
Status Code:200 OK
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, origin, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:api.trello.com
Origin:http://192.168.0.125:9000
Referer:http://192.168.0.125:9000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
Response
Access-Control-Allow-Methods:GET, PUT, POST, DELETE
Access-Control-Allow-Origin:*
Content-Length:0
Content-Type:text/html; charset=utf-8
Date:Mon, 18 Mar 2013 02:51:00 GMT
X-Powered-By:Express
有没有办法配置 Angular 的请求标头以允许上面的 $http.post() 代码工作?