2015-09-06 13 views
6

सेट किया है, मैं अपने अनुरोधों में एक प्राधिकरण शीर्षलेख डालने का प्रयास कर रहा हूं लेकिन यह काम नहीं करता है।Angularjs ने प्राधिकरण शीर्षलेख

मैं इस का उपयोग कर रहा:

var config = {headers: { 
    'Authorization': token 
    } 
}; 
return $http.get('http://localhost:3000/apis/users/all', config); 

और यह भी मैंने कोशिश की यह:

$http.defaults.headers.common['Authorization'] = token; 

लेकिन दोनों ही मामलों के साथ मैं बैक-एंड अनुरोध में हेडर मिला:

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:es-ES,es;q=0.8,ca;q=0.6,en;q=0.4,gl;q=0.2 
Access-Control-Request-Headers:accept, authorization 
Access-Control-Request-Method:GET 
Connection:keep-alive 
Host:localhost:3000 
Origin:http://localhost:8000 
Referer:http://localhost:8000/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4)   AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 

मुझे इस तरह कुछ चाहिए:

Authorization: token 

लेकिन मैं यह मिल गया:

Access-Control-Request-Headers:accept, authorization 

फिर, मैं किसी भी जगह में टोकन मान नहीं है।

मैं बैक-एंड के लिए expressjs उपयोग कर रहा हूँ और मैं CORS के लिए इस का उपयोग करते हुए:

app.use(function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization'); 
    next(); 
    }); 

इसके अलावा क्रोम एक्सटेंशन अग्रिम बाकी ग्राहक यह ठीक काम कर रहा है के साथ कि परीक्षण का कहना है। अनुरोध शीर्षलेख में एक प्राधिकरण है: valueOfToken ..

बहुत बहुत धन्यवाद।

+0

यू कभी भी इस का उत्तर मिला? – Pinch

उत्तर

13

प्रमाणीकरण सादा नहीं हो सकता है।

$http.defaults.headers.common['Authorization'] = 'Basic ' + token; 

या

$http.defaults.headers.common['Authorization'] = 'Bearer ' + token; 
1

की तरह इस प्रयास करें

कुछ निर्दिष्ट मौसम इसकी एक Basic या Bearer प्राधिकरण:

$http({ 

url : "127.0.0.1/login", 
method : 'GET', 
headers : { 
     Content-Type : 'application/json',  
     Authorization: token 
     } 
}).success(function(data){ 
    alert("login Successfully"); 
}).error(function(error){ 
    alert("login error"); 
}) 
+1

कुंजी ** हेडर ** होना चाहिए, हेडर –

3

मुझे यह वही समस्या थी और यह पता चला कि समस्या को सर्वर पक्ष पर अपाचे कॉन्फ़िगरेशन के साथ करना था। एक बात जो मैंने पाया वह आपके लिए उपयोगी हो सकता है कि मेरा प्राधिकरण टोकन प्रीफलाइट मुख्य अनुरोध के बजाय अनुरोध हेडर में भेजा गया है, इसलिए हो सकता है कि यह अनुरोध के शीर्षकों में दिखाई न दे, डेवलपर टूल्स में।

मैं इस तरह मेरे डिफ़ॉल्ट सेट कर रहा हूं:

app.config(function($httpProvider) { 
    $httpProvider.defaults.common['Authorization'] = token; 
    // For angular 1.5, use: 
    // $httpProvider.defaults.headers.common['Authorization'] = token;   
}); 
+0

आपको कॉन्फ़िगरेशन ब्लॉक में $ httpProvider प्रदाता का उपयोग $ http उदाहरण नहीं करना चाहिए। –

+0

यह काम करता है। धन्यवाद :) – zeroflaw

+1

कोणीय 1.5 पर आपको '$ httpProvider.defaults.headers.common.Authorization' का उपयोग करना चाहिए – Daniele

संबंधित मुद्दे