【问题标题】:AngularJS Add Header Authorization for TokenAngularJS为令牌添加标题授权
【发布时间】:2016-04-21 11:51:36
【问题描述】:

所以,过去两天我一直在挖掘,但我不知道为什么这不起作用..

问题来了,我尝试向 api 服务器发出请求,我必须在请求中添加一个令牌,但是当我将令牌添加到标头授权时,我从服务器得到响应 405

我已经在邮递员及其工作上测试过这个 api,但是当我实现 angular 时它不起作用

这是我的代码:

$http({
            method: 'POST',
            url: url,
            data: data,
            headers: {
                "Authorization": "Bearer xxxxxxxxxxx",
                "Content-Type": "application/x-www-form-urlencoded"
            }
        })

这是来自 chrome 的 req 标头: img

那么在这种情况下,这是我的代码,还是服务器问题??

【问题讨论】:

  • 我看到的一个问题是您正在做一个表单 urlencoded 帖子而不是标准的 json 帖子。 data 需要转换。见这里stackoverflow.com/questions/24710503/…
  • 我已经正确转换了数据,如果我不包含标头授权请求是有效的,并且结果 json 响应来自服务器,但是当我尝试添加标头授权时,它将不起作用
  • 您可以查看网络日志是否有错误。
  • 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'localhost:9999'。响应的 HTTP 状态代码为 405。chrome 控制台中的错误

标签: angularjs header cors authorization token


【解决方案1】:
  angular
    .module('app')
    .factory('authInterceptor', authInterceptor);
authInterceptor.$inject = ["$q","$location"];
function authInterceptor($q, $location) {
        return {
          // Add authorization token to headers
            request: function (config) {
             // get token from a cookie or local storage
            var token = "token string ";
            config.headers = config.headers || {};
            config.headers.Authorization = "Bearer " + token;
            return config;
          },
          // Intercept 401s and redirect you to login
          responseError: function(response) {

            if(response.status === 401) {
             // redirect to some page

              // remove any stale tokens
              return $q.reject(response);
            }
            else {
              return $q.reject(response);
            }
          }
        };
      }

然后像这样注入拦截器

$httpProvider.interceptors.push('authInterceptor');

【讨论】:

  • 可能您使用的令牌无效或已过期
  • 即使令牌过期至少它的返回 json 正确并且我从服务器收到令牌已过期的错误消息
猜你喜欢
  • 2021-07-22
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 2020-12-16
  • 2019-11-02
  • 1970-01-01
  • 2020-06-20
相关资源
最近更新 更多