मैं 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
हूं, तो मुझे क्रोम में नेटवर्क टैब पर निम्न 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
जैसा कि आप देख सकते हैं, दोनों हेडर सही ढंग से जोड़े गए थे। लेकिन जब मैं $http.get
ऊपर दिखाए गए URL को बदल देता हूं (वास्तविक पते का उपयोग करने के अलावा, उदाहरण.कॉम नहीं), तो मुझे मिलता है:
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
।
किसी भी विचार जो उपरोक्त कोड के साथ गलत है, या स्थानीय हेडर को डेटा स्रोत के रूप में उपयोग नहीं करने पर अतिरिक्त हेडर कैसे प्राप्त करें?