2016-06-30 6 views
1

私はログインページをAngularで作成しています。ログインAPI呼び出し(POST)の後、応答としてトークンを取得します。コントローラでは、私はすべてのAPI呼び出しのための認可のためにそれを使用できるように、「共通」ヘッダーにこのトークンを設定しようとしています:API応答時にヘッダーにトークンを設定します

LoginSrv.authenticate($scope.credentials).then(
     function(data){ 
      $http.defaults.headers.common.Authorization = data.token; 
      $state.go('nextpage'); 
     } 
); 

次のページをPOSTのAPI呼び出しは再びそこにあります。この呼び出しの後、私はデバッガで要求ヘッダーをチェックすると、そのトークンがヘッダーに表示されます。この応答は再び3ページ目に移動します(今回はヘッダーを再設定しません)。 3番目のページでAPI(GETまたはPOST)を呼び出すと、今回はヘッダーで「承認」を使用できません。どのようにこれが単独で削除されているのか分かりません。

+0

2番目のAPI呼び出しと3番目の呼び出しを行うときにコントローラコードを共有できますか? – ExoticChimp

+0

これについてさらに調査しました。それはサーバー側の問題のようです。 – Gaurav

+0

3番目のAPI呼び出しは、飛行前のOPTIONで停止されているため、ヘッダーが表示されません。 OPTIONに401認可エラーがスローされます。 – Gaurav

答えて

1

3つ目のリクエストがクロスドメインの場合、リクエストが送信される前に利用可能な方法などを確認するプリフライトブラウザのOPTIONSリクエストにサーバーが正しく応答していないようです。 Angularの問題ではありません。 1つの解決策は、このOPTIONS要求に正しく応答するようにサーバーを構成することです。このSOリンク(前のコメントで提供されています)は、潜在的な解決策の詳細と議論について説明していますAngularJS performs an OPTIONS HTTP request for a cross-origin resource

関連する問題