काम नहीं करता है निम्न कोड चल रहा है:नेट HttpWebRequest यूआरआई के माध्यम से करने के लिए उपयोगकर्ता नाम और पासवर्ड पासिंग
var request = HttpWebRequest.Create("http://username:[email protected]/test-http-status-codes.asp?code=401");
var response = request.GetResponse();
... और Wireshark का उपयोग कर अनुरोध निरीक्षण पता चलता है कि कोई प्राधिकरण मेरे मुवक्किल द्वारा प्रयास किया गया (यूआरएल है एक साधारण सेवा जो हमेशा 401 लौटाएगी)।
इस कोड को प्रारंभिक चुनौती के बाद एक प्राधिकरण हैडर भेजता है:
var request = HttpWebRequest.Create("http://username:[email protected]anttools.com/test-http-status-codes.asp?code=401");
request.Credentials = new NetworkCredential("username", "password");
var response = request.GetResponse();
का उपयोग System.Uri
वर्ग कोई प्रभाव नहीं है। यूआरएल में यूजरनेम और पासवर्ड का प्रमाणीकरण क्यों नहीं किया जाता है?
(मैं एक प्रारंभिक चुनौती के बिना प्राधिकरण हैडर गुजर पर this blog post के बारे में पता कर रहा हूँ, लेकिन वह हाथ में मुद्दा नहीं है)
संपादित मैं जोड़ने चाहिए कि यह इस सीमा के आसपास काम करने के लिए काफी आसान है
var userInfo = request.Address.UserInfo;
if (!string.IsNullOrEmpty(userInfo) && userInfo.Contains(':'))
{
request.Credentials = new NetworkCredential(userInfo.Split(':').First(), userInfo.Split(':').Last());
}
हाँ साथ मैन्युअल रूप से, मेरे पास कोड का एक समान कोड है - मुझे नहीं लगता कि क्यों HttpWebRequest इसे अनदेखा करता है ... – friism
मुझे लगता है कि यह एक सुरक्षा समस्या है। कई ब्राउज़र अब भी इसे अनदेखा करते हैं: http://support.microsoft.com/kb/834489 मुझे पिछले .NET संस्करणों को देखने के लिए वापस जाना होगा कि यह कभी भी इसका उपयोग करने के लिए कोड किया गया था, लेकिन इसकी स्पष्ट रूप से नहीं 4.0 में –