2017-12-26 5 views
0

私は丸く見えましたが、私のために何かを見つけることができませんでした。 私は2つのエンドポイントを持っています.1つはバックエンド用で、もう1つは外部サービス用です。私.RUNで特定のエンドポイントのための角度設定ヘッダー1

私は外部APIのための私のサーバーに $http.defaults.headers.common['Authorization'] = 'JWT' + ' ' token';

サービスを行っているすべての要求にこのヘッダーを追加しインターセプタを持っています。

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); 
      } 
     }) 

第2のエンドポイントは、このAuthorizationヘッダが追加されているため、リクエストはそのAPIになされるプリフライトエラーを返します。

リクエストがサーバーに送信されている場合は、認証ヘッダーを追加し、無視しない場合はどうすれば確認できますか。

+1

デフォルトで 'Authorisation'を追加せず、特定の' $ http'呼び出しに直接必要な場合にのみ追加してください。一般的なアプローチを探しているなら、httpインターセプターを使うことができます。 –

+0

私はそれをインターセプターで修正しました!ありがとうございました! –

答えて

0

Slavaが示唆しているように、httpインターセプタでこれを修正した方法は次のとおりです。

は、それを使用するために作成したサービスを取得するためにインジェクタを使用しています。

.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'); 
    }) 
関連する問題