Angular $ http请求不发送x-access-token

时间:2016-02-10 13:26:13

标签: angularjs http http-headers httprequest

我正在尝试设置基于令牌的身份验证,除了$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

使用真实令牌

2 个答案:

答案 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},
});