javascript - 特定端点 Angular 设置 header Angular 1

标签 javascript angularjs node.js angular-factory

我环顾四周,但找不到适合我的东西。 我有 2 个端点,一个用于我可以访问的后端,另一个用于外部服务。

在我的 .run 中,我有一个拦截器,它将这个 header 添加到向我的服务器发出的每个请求中 $http.defaults.headers.common['Authorization'] = 'JWT' + ' ' token';

外部 API 服务。

 service('CorsRequest', function ($http) {

            var baseUrl = 'https://min-api.cryptocompare.com/';

            this.get = function (endpoint) {
                return $http.get(baseUrl + endpoint, { headers: {"Content-Type": 'text/plain'}});

            }

            this.post = function (endpoint, postData) {
                return $http.post(baseUrl + endpoint, postData);
            }
        })

当向该 api 发出请求时,第二个端点会返回预检错误,因为 Authorization header 已添加到其中。

如何检查请求是否发送到我的服务器,添加授权 header ,如果不是则忽略。

最佳答案

以下是我如何按照 Slava 的建议使用 http 拦截器进行修复。

为其创建了一个工厂,并使用注入(inject)器来获取我创建的服务来使用它。

  .factory('ApiInterceptor', function($localStorage, $injector){

    console.log('here')
    return {
       request: function(config) {

      var UserService = $injector.get('UserService');

      if(config.url.indexOf(BASE_URL) > -1) {
        config.headers['Authorization'] = 'JWT' + ' ' + UserService.getCurrentUserToken() ;

      }
      // console.log(config)
      return config;
    },
      response: function(response) {
          // console.log(response.data);
          return response;
        }
    }

})

然后添加配置。

.config(function($httpProvider) {       
    $httpProvider.interceptors.push('ApiInterceptor');
  })

关于javascript - 特定端点 Angular 设置 header Angular 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47972973/

相关文章:

javascript - 为什么 window.onhashchange 在 IE7 兼容模式下工作?

javascript - jquery 自动完成显示输出字符串

javascript - Terser 不提供缩小文件

javascript - 从 AngularJS Controller 调用 Android 函数

mysql - 弃用 : `config.adapters.default` Sails. js

javascript - 如何检查对象是否具有功能? (道场)

javascript - AngularJS 身份验证未按预期工作

Javascript 按数组中的值对哈希进行排序

mysql - 一些 curl 命令的发布请求失败,但其他的则没有

javascript - 在 Ubuntu 16 服务器上运行使用 Firebird 的 nodejs 应用程序