2016-03-28 3 views
0

私は安らかなサービスを呼び出すために使用している以下のコードで認証ヘッダーを送信する必要があります。すべて正常に動作しますが、ヘッダー情報は送信されません。以下のコードで休憩サービスを呼び出す際にヘッダー情報を送信するにはどうすればいいですか

services.factory('downloadService', ['$q', '$timeout', '$window', 
    function ($q, $timeout, $window) { 
     return { 
      download: function (fileName) { 

       var defer = $q.defer(); 

       $timeout(function() { 
        $window.location.href = 'lolo/download?fileName=' + fileName; 

       }, 1000) 
       .then(function() { 
        defer.resolve('success'); 
       }, function() { 
        defer.reject('error'); 
       }); 
       return defer.promise; 
      } 
     }; 
    } 
]); 

私はAuthorizationヘッダーの下に送信する必要がある -

$http.defaults.headers.common.Authorization = $localStorage.authToken; 
+0

[タグ:angular2]については、[タグ:angularjs]タグを追加しないでください(別の方法でも)、あなたの質問に関するバージョンを明確にしてください。 –

答えて

0

$window.location.hrefを使用しているときは、ヘッダを渡すことはできませんが、あなたは常に承認にcookiesを使用することができます。

security problems with cookiesを調べてから、サーバーの実装を変更することをお勧めしますが、

0

@ S4beRは、$ window.location.hrefを使ってヘッダーを渡すことはできません。 回避策は、トークンをクエリ文字列またはCookieとして渡すことです。ただし、これらのオプションにはセキュリティ上の問題があります。 もう1つの方法は、有効期限が短い、たとえば60秒の一時的なダウンロードトークンを要求することです。次に、このダウンロードトークンをurlのクエリ文字列として渡します。

services.factory('downloadService', ['$q', '$timeout', '$window', '$http', '$localStorage' 
    function ($q, $timeout, $window, $http, $localStorage) { 
    return { 
     download: function (fileName) { 

      var defer = $q.defer(); 
      var req = { 
      method: 'POST', 
      url: '/download/token', 
      headers: { 
       'Authorization': $localStorage.get('token') 
      } 
      } 
      $http(req) 
      .then(function (token) { 
       $timeout(function() { 
        $window.open('lolo/download?fileName=' + fileName +"&token="+token, "_blank") = ; 

       }, 1000) 
      }) 
      .then(function() { 
       defer.resolve('success'); 
      }, function() { 
       defer.reject('error'); 
      }); 
      return defer.promise; 
     } 
    }; 
    } 
]); 
+0

GETリクエストでセキュリティトークンを渡すのは避けてください。ハッカーがそれを盗む可能性があり、寿命が60秒であってもセキュリティの問題につながる可能性があります。 – S4beR

+0

それは本当です。アプリが提供する必要のあるセキュリティに依存しますが、ヘッダーやクッキーを使用できない場合は回避してください。 –

関連する問題