我正在尝试设置基于令牌的身份验证,除了$http
请求不发送x-access-token
标头之外,一切正常。
我正被推入标题中:
.config(function($httpProvider) {
$httpProvider.interceptors.push('AuthInterceptor');
})
这是每个请求上发生的 AuthInterceptor 服务函数
AuthInterceptorFactory.request = function(config) {
let token = AuthToken.getToken(); // gets the token from local storage
if (token) config.headers['x-access-token'] = token;
return config;
}
这是在请求中发送的标题
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,es;q=0.6
Access-Control-Request-Headers:accept, x-access-token
Access-Control-Request-Method:GET
Connection:keep-alive
Host:localhost:3000
Origin:http://localhost
Referer:http://localhost/my-app/index.php
如果我在请求中添加令牌作为参数,它可以工作并发送 x-access-token :( ES6语法):
getAllLocutores(){
let token = this.AuthToken.getToken();
return this.http({
method: 'GET',
url: this.baseUrl,
params: { token }
});
}
但我猜这些标题是这样做的,所以我不必在每个需要它的请求上发送一个标记作为参数。
x-access-token 正被添加到config.headers中,但不会发送请求。
当我将令牌作为参数发送时,这些是标题
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,es;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Host:localhost:3000
Origin:http://localhost
Referer:http://localhost/my-app/index.php
x-access-token:xxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxx.xxxxxxx
使用真实令牌
答案 0 :(得分:0)
这可能有效
$httpProvider.interceptors.push(function() {
return {
'request': function(config) {
let token = AuthToken.getToken();
if (token) config.headers['x-access-token'] = token;
return config;
}
};
});
答案 1 :(得分:0)
尝试使用
return this.http({
method: 'GET',
url: this.baseUrl,
headers: {'x-access-token':token},
});