Ich bin ein Anfänger von angular.js und versuche, einer Anfrage einige Header hinzuzufügen:
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);
Ich habe mir die gesamte Dokumentation angesehen, und dies scheint mir richtig zu sein.
Wenn ich eine lokale Datei für die URL in der verwende $http.get
, wird auf der Registerkarte "Netzwerk" in Chrome die folgende HTTP-Anforderung angezeigt:
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
Wie Sie sehen können, wurden beide Header korrekt hinzugefügt. Aber wenn ich die URL in die $http.get
oben gezeigte ändere (außer unter Verwendung der realen Adresse, nicht example.com), erhalte ich:
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
Der einzige Unterschied im Code zwischen diesen beiden besteht darin, dass zum einen die URL eine lokale Datei und zum anderen ein Remote-Server ist. Wenn Sie sich den zweiten Anforderungsheader ansehen, gibt es keinen Authentifizierungsheader, und der verwendet Accept
anscheinend einen Standard anstelle des angegebenen. Auch in der ersten Zeile steht jetzt OPTIONS
statt GET
(obwohl Access-Control-Request-Method
ist GET
).
Haben Sie eine Idee, was mit dem obigen Code nicht stimmt oder wie Sie die zusätzlichen Header einbinden können, wenn Sie keine lokale Datei als Datenquelle verwenden?