저는 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);
나는 모든 문서를 보았고 이것이 정확 해야하는 것처럼 보입니다.
에서 URL에 로컬 파일을 사용할 때 $http.get
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
).
위의 코드에 어떤 문제가 있는지 또는 로컬 파일을 데이터 소스로 사용하지 않을 때 사용하여 추가 헤더를 얻는 방법을 알고 있습니까?