आपको एनटीएलएम (एकीकृत विंडोज प्रमाणीकरण) चुनौती का जवाब नहीं देना है, अगर आपके ब्राउज़र को ठीक से कॉन्फ़िगर किया गया है, तो आपके ब्राउज़र को यह आपके लिए करना चाहिए। कई अतिरिक्त जटिलताओं की भी संभावना है।
चरण 1 - ब्राउज़र
चेक कि ब्राउज़र के लिए उपयोग और एक NTLM वेब अनुप्रयोग के साथ या सॉफ्टवेयर आप सीधे पहले विकसित कर रहे हैं मारकर अपने क्रेडेंशियल भेज सकते हैं।
चरण 2 - जावास्क्रिप्ट withCredentials
401 अनधिकृत त्रुटि प्राप्त विशेषता और लक्षण वर्णित बिल्कुल वैसा ही है जब मैं 'सही' के लिए 'withCredentials' विशेषता सेट करने में विफल रहा है। मैं jQuery से परिचित नहीं हूं, लेकिन सुनिश्चित करें कि उस विशेषता को सेट करने का आपका प्रयास सफल रहा है।
यह उदाहरण मेरे लिए काम करता है:
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://localhost:44377/SomeService", true);
xhttp.withCredentials = true;
xhttp.send();
xhttp.onreadystatechange = function(){
if (xhttp.readyState === XMLHttpRequest.DONE) {
if (xhttp.status === 200)
doSomething(xhttp.responseText);
else
console.log('There was a problem with the request.');
}
};
चरण 3 - सर्वर साइड CORS (वैकल्पिक)
मुझे लगता है एक प्रमुख कारण लोग इस सवाल पर पहुंचते हैं कि वे एक विकसित कर रहे हैं सक्षम अन्यथा होस्ट किए गए किसी अन्य घटक के साथ उनके वर्कस्टेशन पर घटक। यह Cross-Origin Resource Sharing (CORS) मुद्दों का कारण बनता है। दो समाधान हैं:
- अपने ब्राउज़र में सीओआरएस को अक्षम करें - विकास के लिए अच्छा है जब आखिरकार आपका काम उसी स्रोत पर तैनात किया जाएगा, जिस पर आपका कोड एक्सेस हो रहा है।
- अपने सर्वर पर सीओआरएस सक्षम करें - व्यापक इंटरनेट पर पर्याप्त पठन है, लेकिन इसमें मूल रूप से सीओआरएस सक्षम करने वाले शीर्षलेख भेजना शामिल है।
संक्षेप में, पहचान के साथ CORS सक्षम करने के लिए आप करना होगा:
- एक 'पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति' शीर्षक है कि सेवा की पेज की उत्पत्ति से मेल खाता है भेजें ... इस नहीं किया जा सकता '*'
- भेजें एक 'पहुंच-नियंत्रण-अनुमति दें-क्रेडेंशियल' मूल्य के साथ 'सही'
यहाँ मेरी Global.asax फ़ाइल में मेरे कार्य नेट कोड नमूना है। मुझे लगता है कि क्या हो रहा है यह देखने में बहुत आसान है और यदि आवश्यक हो तो अन्य भाषाओं में अनुवाद करें।
void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.HttpMethod == "OPTIONS")
{
Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
Response.AddHeader("Access-Control-Max-Age", "1728000");
Response.End();
}
else
{
Response.AddHeader("Access-Control-Allow-Credentials", "true");
if (Request.Headers["Origin"] != null)
Response.AddHeader("Access-Control-Allow-Origin" , Request.Headers["Origin"]);
else
Response.AddHeader("Access-Control-Allow-Origin" , "*"); // Last ditch attempt!
}
}
महान सारांश, कार्यान्वयन की सराहना करेंगे ... –