2015-10-07 25 views
6

AngularJS'deki istemcimden bir Web RestFUL API kullanıyorum.JSESSIONID değerini alın ve AngularJS'de Çerez oluşturun

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

Sonra ben bu Http başlıkları ben jsessionid değeri elde ve sonra benim tarayıcıda el ile oluşturmak için ngCookies kullanıyorum

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

Yanıtı var, ama onu erişemez.

StackOverflow'ta bununla ilgili tüm yayınları gördüm, ancak kullanımdan kaldırılmış veya tamamen belirsiz.

İlgi ve yardımlarınız için teşekkür ederiz.

+0

Angular'da JSESSIONID'e neden erişmeniz gerekiyor? Bu çerez HttpOnly olarak işaretlenmiştir, yani JS'de erişilemez. –

+0

JSESSIONID çerezinin gönderiminin otomatik olarak işlendiğini anlamadım. Bunu elle yapmam gerektiğini düşündüm. Yorumlar bunu anlamama yardımcı oldu. Sorun Çözme –

cevap

7

HttpOnly çerezlerini JavaScript ile alamıyorsunuz. HttpOnly bayrağının bütün amacı budur.

Bu, gerekmemesi gerektiğini söyledi. Çerez, aynı sunucuya herhangi bir istek ile otomatik olarak gönderilmelidir. Çapraz kaynaklı XHR istekleriyle ilgileniyorsanız, çerez eklemek için your_XHR_instance.withCredentials değerini true olarak ayarlayın.

+1

'XMLHttpRequest.withCredentials'? Bir JavaScript nesnesi olduğundan, sunucu tarafını ayarlamak zor olurdu. – Quentin

+2

teşekkürler! Sadece app.config dosyasında ayarladım: \t \t $ httpProvider.defaults.withCredentials = true; "Access-Control-Allow-Origin" öğesinin doğru şekilde ayarlandığını ve "Access-Control-Allow-Credentials" öğesinin true olarak ayarlandığı RestFUL sunucumda denetle. İyi çalışıyor. Yardımlarınız için teşekkürler :) –

İlgili konular