दिलचस्प पोस्ट
ईवेंट श्रोता क्रॉस ब्राउज़र को जोड़ने एकाधिक कॉलम के एसक्यूएल MAX? वेब एपीआई स्ट्रीम कॉन्टैन्टेंट बनाम पुशस्ट्रीम कंटेंट MySQL में तारीख श्रेणियों के ओवरलैप की जांच करें Numpy.array में अद्वितीय पंक्तियां ढूंढें मैं Rails पर रूबी के साथ JSON को कैसे पार्स कर सकता हूं? आप डबल-उद्धृत स्ट्रिंग में वस्तु की संपत्ति का उपयोग कैसे कर सकते हैं? अधिकतम या डिफ़ॉल्ट? मुझे एक अरेंज ऑफ़ वेरियंट्स के लिए एक रेंज प्रदान करने में समस्या क्यों हो रही है? क्या JTextField में केवल संख्यात्मक मान स्वीकार करने का कोई तरीका है? जांचें कि एकाधिक स्ट्रिंग किसी अन्य स्ट्रिंग में मौजूद हैं या नहीं जनहित याचिका का उपयोग करने के लिए सफेद स्थान का ट्रिम करें जावा का बूलियन आदिम आकार क्यों परिभाषित नहीं है? सी # सूची <> क्रमशः x और y स्ट्रिंग के अंदर बैकस्लैश प्राप्त करें – जावास्क्रिप्ट

JQuery के उपयोग से मैं webservice के लिए विंडोज प्रमाणीकरण कैसे पार करूं?

मैं इस तरह एक। नेट वेब सेवा को कॉल करने के लिए jQuery का उपयोग कर रहा हूं:

var service_url = "https://example.com/myservice.asmx" $.ajax({ type: "GET", url: service_url, dataType: "xml", data: "ParamId=" + FormId.value, processData: false, error: function(XMLHttpRequest, textStatus, errorThrown) { ajaxError(XMLHttpRequest, textStatus, errorThrown); }, success: function(xml) { DoSomething(xml); } }); 

अब मैं Windows प्रमाणीकरण में " https://example.com/myservice.asmx " रैप करना चाहता हूं। JQuery / javascript का उपयोग कर मैं सेवा के लिए क्रेडेंशियल्स कैसे पार करूं?

आदर्श रूप से मैं वर्तमान उपयोगकर्ता के क्रेडेंशियल्स का उपयोग करना चाहता हूं लेकिन यदि आवश्यक हो तो मैं सभी सेवा कॉल के लिए 1 मास्टर क्रेडेंशियल का उपयोग कर सकता हूं।

वेब के समाधान से एकत्रित समाधान "JQuery के उपयोग से मैं webservice के लिए विंडोज प्रमाणीकरण कैसे पार करूं?"

ऐसा लगता है कि आपको बेस हेडडर को base64 auth डेटा मैन्युअल रूप से सेट करना होगा।

निर्देश यहां दिए गए हैं: http://coderseye.com/2007/how-to-do-http-basic-auth-in-ajax.html

आपको सबसे पहले निम्न कोड यहां लेना होगा: http://www.webtoolkit.info/javascript-base64.html base64 एन्कोडिंग करने के लिए

 /** * * Base64 encode / decode * http://www.webtoolkit.info/ * **/ var Base64 = { // private property _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", // public method for encoding encode : function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = Base64._utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); } return output; }, // public method for decoding decode : function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = Base64._utf8_decode(output); return output; }, // private method for UTF-8 encoding _utf8_encode : function (string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // private method for UTF-8 decoding _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } } 

फिर आपको प्रमाणिकृत डेटा के निर्माण के लिए कोड की आवश्यकता होगी, यह सिर्फ उपयोगकर्ता और पासवर्ड का बेस 64 है:

 function make_base_auth(user, password) { var tok = user + ':' + password; var hash = Base64.encode(tok); return "Basic " + hash; } 

और फिर आप बस अनुरोध करने से पहले jQuery के साथ हेडर जोड़ें:

 var service_url = "https://example.com/myservice.asmx" $.ajax({ type: "GET", url: service_url, dataType: "xml", data: "ParamId=" + FormId.value, processData: false, beforeSend : function(req) { req.setRequestHeader('Authorization', make_base_auth ('USERNAME', 'PASSWORD')); }, error: function(XMLHttpRequest, textStatus, errorThrown) { ajaxError(XMLHttpRequest, textStatus, errorThrown); }, success: function(xml) { DoSomething(xml); } }); 

मुझे लगता है कि आजकल आप केवल अनुरोध ऑब्जेक्ट की withCredentials संपत्ति को true सेट कर सकते हैं, उदाहरण के लिए:

 $.ajax({ type: "GET", url: service_url, dataType: "xml", data: "ParamId=" + FormId.value, processData: false, xhrFields: { withCredentials: true }, error: function(XMLHttpRequest, textStatus, errorThrown) { ajaxError(XMLHttpRequest, textStatus, errorThrown); }, success: function(xml) { DoSomething(xml); } }); 

इससे AJAX अनुरोध में मौजूदा प्रमाणीकरण हेडर / कुकीज पारित होने का कारण बनता है, मेरे लिए काम करता है अपना स्वयं का बेस एन्कोडिंग करने की कोई जरूरत नहीं है, आदि।