我是 angular.js 的新手,我正在尝试给一个请求添加一些标题:
var config = {headers: {
'Authorization': 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==',
'Accept': 'application/json;odata=verbose'
}
};
$http.get('https://www.example.com/ApplicationData.svc/Malls(1)/Retailers', config).success(successCallback).error(errorCallback);
我看了所有的文件,在我看来应该是正确的。
当我使用本地文件作为 $http.get
中的 URL 时,我在 Chrome 的网络选项卡上看到以下 HTTP 请求:
GET /app/data/offers.json HTTP/1.1
Host: www.example.com
Connection: keep-alive
Cache-Control: max-age=0
If-None-Match: "0f0abc9026855b5938797878a03e6889"
Authorization: Basic Y2hhZHN0b25lbWFuOkNoYW5nZV9tZQ==
Accept: application/json;odata=verbose
X-Requested-With: XMLHttpRequest
If-Modified-Since: Sun, 24 Mar 2013 15:58:55 GMT
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
X-Testing: Testing
Referer: http://www.example.com/app/index.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
正如您所看到的,两个头都被正确地添加了。但是,当我将 URL 更改为上面 $http.get
中显示的 URL (除了使用实际地址,而不是 example.com)时,我得到:
OPTIONS /ApplicationData.svc/Malls(1) HTTP/1.1
Host: www.datahost.net
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://mpon.site44.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
Access-Control-Request-Headers: accept, origin, x-requested-with, authorization, x-testing
Accept: */*
Referer: http://mpon.site44.com/app/index.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
这两者之间代码的唯一区别是,第一个 URL 是本地文件,第二个 URL 是远程服务器。如果查看第二个请求标头,就会发现没有身份验证标头,而且 Accept
似乎使用的是默认标头,而不是指定的标头。此外,第一行现在说的是 OPTIONS
而不是 GET
(尽管 Access-Control-Request-Method
是 GET
)。
知道上面的代码出了什么问题吗? 或者在不使用本地文件作为数据源时,如何获得包含的附加头文件?