2015-10-07 7 views
6

में कुकी बनाएं I AngularJS में मेरे क्लाइंट से वेब RestFUL API का उपयोग कर रहा हूं।JSESSIONID मान प्राप्त करें और AngularJS

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

फिर, मैं इस HTTP हेडर प्रतिक्रिया

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

मैं ngCookies उपयोग कर रहा हूँ jsessionid मूल्य और फिर अपने ब्राउज़र में मैन्युअल रूप से इसे बनाने के लिए है, लेकिन मैं इसे का उपयोग नहीं कर सकते।

मैंने पहले से ही स्टैक ओवरफ्लो में इस बारे में सभी पोस्ट देखी हैं, लेकिन वे बहिष्कृत या पूरी तरह से अस्पष्ट हैं।

आपकी रुचि और सहायता के लिए धन्यवाद।

+0

आपको कोणीय में JSESSIONID तक पहुंचने की आवश्यकता क्यों है? उस कुकी को केवल एचटीपी के रूप में चिह्नित किया गया है, यानी इसे जेएस में एक्सेस नहीं किया जा सकता है। –

+0

मुझे नहीं मिला कि कुकी JSESSIONID का प्रेषण स्वचालित रूप से संभाला गया था। मैंने सोचा कि मुझे इसे मैन्युअल रूप से करना है। टिप्पणियों ने मुझे यह समझने में मदद की। समस्या –

उत्तर

7

आप जावास्क्रिप्ट के साथ केवल कुकीज़ प्राप्त नहीं कर सकते हैं। यह पूरी तरह से झंडा का पूरा उद्देश्य है।

उस ने कहा, आपको इसकी आवश्यकता नहीं है। कुकी को उसी सर्वर पर किसी भी अनुरोध के साथ स्वचालित रूप से भेजा जाना चाहिए। यदि आप क्रॉस-मूल XHR अनुरोधों से निपट रहे हैं, तो कुकीज को शामिल करने के लिए your_XHR_instance.withCredentialstrue पर सेट करें।

+1

'XMLHttpRequest.withCentialentials' हल करें? चूंकि यह एक जावास्क्रिप्ट ऑब्जेक्ट है, इसलिए इसे सर्वर की ओर सेट करना मुश्किल होगा। – Quentin

+2

धन्यवाद! मुझे बस app.config में सेट करना पड़ा: \t \t $ httpProvider.defaults.withCentialentials = true; मेरे RestFUL सर्वर पर जांचें कि "एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिन" ठीक तरह से सेटिंग कर रहा था और "एक्सेस-कंट्रोल-स्वीट-क्रेडेंशियल" सत्य पर सेट किया गया था। यह ठीक काम करता है। आपकी मदद के लिए धन्यवाद :) –

संबंधित मुद्दे