2012-02-28 19 views
5

मैं एक स्थानीय (फ़ाइल: // एक्सेस) एचटीएमएल ऐप से .NET WCF डोमेन सेवा के क्रॉस-डोमेन उपयोग की जांच कर रहा हूं। ऐप AJAX कॉल के लिए jQuery का उपयोग कर रहा है।jQuery.Ajax "प्रतिबंधित यूआरआई से वंचित प्रवेश" स्पष्टीकरण?

सर्वर पर प्रमाणीकरण (यानी अनाम प्रमाणीकरण के साथ) प्रमाणीकरण के बिना मैंने सीओआरएस "एक्सेस-कंट्रोल-ऑब्जेक्ट-ऑरिजन: *" हेडर के साथ जेएसओएन प्रारूप में डेटा को सफलतापूर्वक पुनर्प्राप्त कर लिया है और हेडर के बिना JSONP प्रारूप में।

अब मैं प्रमाणीकरण और सीओआरएस हेडर JSON (JSONP नहीं) प्रारूप डेटा के साथ होने पर व्यवहार को समझने की कोशिश कर रहा हूं।

निम्न jQuery कोड सर्वर को एक अनुरोध भेजेगा, जो बदले में "HTTP/1.1 401 अनधिकृत" के साथ प्रतिक्रिया देता है।

$.ajax({ 
    url: myUrl, 
    dataType: 'json', 
    cache: false, 
    complete: function() { /* do stuff */ }, 
    timeout: 5000, 
    data: myData 
}); 

निम्नलिखित jQuery कोड सर्वर को एक अनुरोध कोड पड़ता है नहीं है और तुरंत एक अपवाद "प्रतिबंधित यूआरआई पर पहुंच अस्वीकृत" फेंकता है, 1012.

$.ajax({ 
    url: myUrl, 
    dataType: 'json', 
    cache: false, 
    complete: function() { /* do stuff */ }, 
    timeout: 5000, 
    username: "chris", 
    password: "password", 
    data: myData 
}); 

मैं समझता हूँ और पहले मामले की उम्मीद है। क्या कोई मुझे दूसरे मामले में अपवाद समझा सकता है? मैं कम से कम अनुरोध करने की उम्मीद करता।

संपादित करें: Grrr, यह एफएफ 10.0.2 में है। जैसा कि मुझे उम्मीद है क्रोम कार्य करता है, तो क्या यह एक एफएफ मुद्दा है?

उत्तर

0

आप इस पर काबू पाने के लिए एक कॉलबैक फ़ंक्शन इस्तेमाल कर सकते हैं: http://docs.jquery.com/Ajax/jQuery.ajax#options

+0

मुझे एहसास है कि मैं jQuery.ajax कॉलबैक फ़ंक्शंस में से किसी एक के साथ त्रुटि पकड़ सकता हूं, या JSONP के साथ कॉलबैक फ़ंक्शन का उपयोग कर सकता हूं - क्या आपका मतलब है? मेरा सवाल वास्तव में क्यों है (शायद सिर्फ फ़ायरफ़ॉक्स) अनुरोध नहीं करता है और इसके बजाय इस सटीक परिदृश्य में एक त्रुटि उठाता है। – Chris

5

आप इस तरह के कुकीज़ के रूप में साख का उपयोग करते हैं या HTTP मूल प्रमाणीकरण उपयोगकर्ता नाम/पासवर्ड क्षेत्रों अपने पार मूल अनुरोध में, आप भी "withCredentials निर्धारित करने की आवश्यकता "एक्सएचआर पर सच करने के लिए ध्वज। JQuery में, यह $ .ajax कॉल पर xhrFields प्रॉपर्टी के साथ किया जाता है। बदले अपने कोड को पढ़ने के लिए

$.ajax({ 
    url: myUrl, 
    dataType: 'json', 
    cache: false, 
    complete: function() { /* do stuff */ }, 
    timeout: 5000, 
    username: "chris", 
    password: "password", 
    data: myData, 
    xhrFields: { withCredentials: true } 
}); 

इसके अलावा, दूसरे छोर पर सर्वर पहचान के साथ पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति हेडर के लिए उपयोग नहीं कर सकते "*"। इसके बजाय इसे मूल हेडर के लिए एक सटीक मिलान प्रदान करना होगा।