2011-12-08 19 views
7

मेरे पास बुकमार्कमार्क है। अगर मैं एक यादृच्छिक पृष्ठ खोलता हूं (मेरा नहीं) और बुकमार्कलेट पर क्लिक करें, तो मैं यह जांचना चाहता हूं कि उपयोगकर्ता मेरे पृष्ठ पर लॉग इन है या नहीं।क्रॉस डोमेन लॉगिन चेक?

मैं पहले से ही एक्सेस-कंट्रोल-अनुमति-उत्पत्ति का उपयोग कर क्रॉस-डोमेन AJAX अनुरोध कर रहा हूं, लेकिन ऐसा लगता है कि सत्र आईडी या कुकी यहां नहीं भेजती है।

क्या ऐसा करने का कोई तरीका है?

+0

यदि आप आरईएसटी का उपयोग कर रहे हैं तो एक्सेस-कंट्रोल-स्वीट-विधियों को हटाएं और PUT जोड़ने के लिए मत भूलना –

उत्तर

4

एलेक्स सही है! यहां पूरा समाधान है। (यह आईई 8 और आईई 9 के साथ काम नहीं करता है!)

आपको क्लाइंट साइड पर withCredentials सेट करने की आवश्यकता है। चूंकि jQuery 1.5.1 आप इसे नीचे दिखाए गए जैसा कर सकते हैं (Source)। पुराने संस्करण के लिए white rabbit का पालन करें।

$.ajax({ 
    url: a_cross_domain_url, 
    xhrFields: { 
     withCredentials: true 
    } 
}); 

सर्वर पक्ष पर आपको सेटिंग विकल्प की अनुमति देना है, प्रमाण-पत्रों की अनुमति दें और मूल की अनुमति दें। वाइल्डकार्ड उत्पत्ति की अनुमति नहीं है! लेकिन आप अनुरोध हेडर से मूल को पढ़ सकते हैं :)

// auto adapted Access Control to origin from request header. 
$headers = apache_request_headers(); 
foreach ($headers as $header => $value) { 
    if ($header == 'Origin') 
     header('Access-Control-Allow-Origin: ' . $value, true); 
} 
// send cookies from client 
header('Access-Control-Allow-Credentials: true', true); 
// allow all methods 
header('Access-Control-Allow-Methods: GET, POST, OPTIONS', true); 
संबंधित मुद्दे