2016-03-28 7 views
0

senden Ich muss Authorization-Header in der folgenden Code senden, die ich verwenden, um Ruhe-Service aufrufen. Alles funktioniert gut, aber Header-Informationen werden nicht gesendet.Wie kann ich Header-Informationen während des Anrufs Rest-Service mit unter Code

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

muss ich unter Authorization-Header senden -

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

Wenn es um [tag: angular2] geht, fügen Sie bitte nicht das [tag: angularjs] -Tag hinzu (auch andersherum), um die Version zu verdeutlichen, auf die sich Ihre Frage bezieht. –

Antwort

0

Sie kann nicht Header passieren während $window.location.href verwenden, aber man kann immer cookies für die Autorisierung verwenden.

Obwohl ich würde vorschlagen, einen Blick auf security problems with cookies bevor Sie etwas auf Ihrer Server-Implementierung zu ändern.

0

Wie @ S4beR sagte, können Sie Header mit $ window.location.href nicht übergeben. Eine Umgehung besteht darin, das Token als Abfragezeichenfolge oder mithilfe von Cookie zu übergeben. Diese Optionen leiden jedoch unter Sicherheitsproblemen. Ein anderer Ansatz besteht darin, ein temporäres Download-Token mit einer kurzen Lebensdauer von beispielsweise 60 Sekunden anzufordern. Übergeben Sie dann dieses Download-Token als eine Abfragezeichenfolge in URL.

+0

sollten wir nicht vermeiden, Sicherheits-Token in einer GET-Anfrage zu übergeben? Jeder Hacker kann es stehlen und kann zu Sicherheitsproblemen führen, obwohl die Lebensdauer 60 Sekunden beträgt. – S4beR

+0

Das stimmt. Hängt davon ab, wie viel Sicherheit die App bereitstellen muss. Es ist ein Problem, wenn Sie Header oder Cookies nicht verwenden können. –

Verwandte Themen