Tôi là người mới làm quen với angle.js và tôi đang cố gắng thêm một số tiêu đề vào một yêu cầu:
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);
Tôi đã xem tất cả các tài liệu, và điều này đối với tôi dường như là đúng.
Khi tôi sử dụng tệp cục bộ cho URL trong $http.get
, tôi thấy yêu cầu HTTP sau trên tab mạng trong Chrome:
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
Như bạn có thể thấy, cả hai tiêu đề đã được thêm chính xác. Nhưng khi tôi thay đổi URL thành URL được hiển thị ở $http.get
trên (ngoại trừ sử dụng địa chỉ thực, không phải example.com), thì tôi nhận được:
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
Sự khác biệt duy nhất về mã giữa hai mã này là đối với URL đầu tiên là một tệp cục bộ và đối với URL thứ hai là một máy chủ từ xa. Nếu bạn nhìn vào tiêu đề Yêu cầu thứ hai, không có tiêu đề Xác thực và tiêu đề này Accept
dường như đang sử dụng mặc định thay vì được chỉ định. Ngoài ra, dòng đầu tiên hiện OPTIONS
thay vì GET
(mặc dù Access-Control-Request-Method
là GET
).
Bất kỳ ý tưởng nào sai với mã trên hoặc làm thế nào để lấy các tiêu đề bổ sung được bao gồm khi không sử dụng tệp cục bộ làm nguồn dữ liệu?