2015-10-07 27 views
6

私はAngularJSのクライアントからWeb RestFUL APIを使用しています。JSESSIONID値を取得し、AngularJSでCookieを作成します。

app.controller('LoginController', [ 
    '$http', 
    '$cookies', 

    function($http, $cookies) { 
     this.credentials = {}; 

     this.http = $http; 

     this.login = function() { 
     console.log(this.credentials); 

     var authdata = btoa(
      this.credentials.username + 
      ':' + 
      this.credentials.password 
     ); 

     $http.defaults.headers.common['Authorization'] = 'Basic ' + authdata; 

     console.log($http); 

     var res = $http.post("http://API_NAME/library"); 

     res.success(function(data, status, header){ 
      alert('Successfull func'); 

      console.log($cookies.get('JSESSIONID')); 
     }); 

     res.error(function(data, status, headers, config) { 
      console.log('Error Log'); 
     }); 
    }; 
    }, 
]); 

はその後、私はJSESSIONID値を取得し、私のブラウザで手動で作成するngCookiesを使用していますが、私はそれにアクセスすることはできません。このHTTPヘッダーレスポンス

Set-Cookie:JSESSIONID=azekazEXAMPLErezrzez; Path=/; HttpOnly 

を持っています。

私はStackOverflowでこれについてのすべての記事を見ましたが、非難されているか完全に不明です。

ご協力いただきありがとうございます。

+0

なぜJSESSIONIDにAngularでアクセスする必要がありますか?そのCookieはHttpOnlyとしてマークされています。つまり、JSでアクセスできません。 –

+0

私は、JSESSIONIDが自動的に処理されたクッキーの送信を取得できませんでした。 私はそれを手動でやらなければならないと思った。 コメントは私にこれを理解するのを助けました。問題は –

答えて

7

JavaScriptでHttpOnly Cookieを取得することはできません。これがHttpOnlyフラグの目的です。

あなたはそうする必要はありません。クッキーは、任意の要求と共に同じサーバーに自動的に送信されます。クロスオリジンXHRリクエストを処理する場合は、your_XHR_instance.withCredentialstrueにCookieを含めるように設定してください。

+1

'XMLHttpRequest.withCredentials'を解決しますか?これはJavaScriptオブジェクトなので、サーバー側に設定するのは難しいでしょう。 – Quentin

+2

ありがとう!私はちょうどapp.configで設定しなければならなかった: \t \t $ httpProvider.defaults.withCredentials = true; "Access-Control-Allow-Origin"が正しく設定されており、 "Access-Control-Allow-Credentials"がtrueに設定されているRestFULサーバーをチェックしてください。 正常に動作します。 ありがとうございました:) –

関連する問題