2015-09-06 22 views
6

Tôi đang cố gắng đặt tiêu đề ủy quyền trong các yêu cầu của mình nhưng nó không hoạt động.Angularjs đặt tiêu đề ủy quyền

Tôi đang sử dụng này:

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

Và tôi cũng đã cố gắng này:

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

Nhưng với cả hai trường hợp tôi có tiêu đề này trong yêu cầu back-end:

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 

Tôi cần một cái gì đó như thế này:

Authorization: token 

Nhưng tôi nhận điều này:

Access-Control-Request-Headers:accept, authorization 

Sau đó, tôi không có ở bất cứ nơi giá trị tượng trưng.

Tôi đang sử dụng expressjs cho back-end và tôi sử dụng này cho 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(); 
    }); 

Cũng nói rằng thử nghiệm với phần mở rộng chrome trước phần còn lại khách hàng đó đang làm việc tốt. Trong tiêu đề yêu cầu có Uỷ quyền: valueOfToken ..

Cảm ơn rất nhiều.

+0

đã u bao giờ nhận được một câu trả lời cho điều này? – Pinch

Trả lời

13

Ủy quyền không được đơn giản.

định vượt qua nó một Basic hoặc Bearer Authorization

Something như

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

hoặc

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

Hãy thử điều này:

$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

khóa phải là ** tiêu đề ** ở đây, không phải tiêu đề –

3

Tôi đã gặp vấn đề tương tự và nó bật ra vấn đề đã làm với cấu hình Apache ở phía máy chủ. Một điều tôi thấy có thể hữu ích với bạn ở đây là mã thông báo ủy quyền của tôi được gửi trong các tiêu đề yêu cầu preflight yêu cầu thay vì yêu cầu chính, vì vậy nó có thể không xuất hiện trong tiêu đề của yêu cầu khi bạn xem nó trong các công cụ dành cho nhà phát triển.

Tôi đang thiết lập mặc định của tôi như thế này:

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

Bạn nên sử dụng nhà cung cấp $ httpProvider trong khối cấu hình không phải là phiên bản $ http. –

+0

nó hoạt động. thanks :) – zeroflaw

+1

Trên góc 1.5 bạn nên sử dụng '$ httpProvider.defaults.headers.common.Authorization' – Daniele

Các vấn đề liên quan