çalışmıyor .NET HttpWebRequest URI aracılığıyla kullanıcı adı ve şifresini Geçme:Aşağıdaki kodu Running
var request = HttpWebRequest.Create("http://username:[email protected]/test-http-status-codes.asp?code=401");
var response = request.GetResponse();
... ve hiçbir yetki müvekkilimin girişimde bulunmaktadır oranlarına baktığımızda Wireshark'ı kullanarak isteği teftiş (url'dir her zaman 401 dönecek basit bir servis).
Bu kod ilk mücadeleden sonra bir yetkilendirme başlığı gönderir:
var request = HttpWebRequest.Create("http://username:[email protected]/test-http-status-codes.asp?code=401");
request.Credentials = new NetworkCredential("username", "password");
var response = request.GetResponse();
System.Uri
sınıf etkisi yoktur kullanma. URL'de kullanıcı adı ve şifre neden kimlik doğrulaması için kullanılmıyor?
(Ben ilk meydan vermeden yetkilendirme başlığını geçirmek üzerine this blog post farkında değilim, ama şu eline sorun değildir)
DÜZENLEME Ben sınırlamasını aşmak için oldukça kolay olduğunu eklemek gerekir
var userInfo = request.Address.UserInfo;
if (!string.IsNullOrEmpty(userInfo) && userInfo.Contains(':'))
{
request.Credentials = new NetworkCredential(userInfo.Split(':').First(), userInfo.Split(':').Last());
}
Evet ile, Bende benzer bir kod var - HttpWebRequest'in bunu neden görmezden geldiğini anlamıyorum ... – friism
Bunun bir güvenlik sorunu olduğunu düşünüyorum. Birçok tarayıcı artık bunu da görmezden geliyor: http://support.microsoft.com/kb/834489 Kullanmak için hiç kodlanmış olup olmadığını görmek için önceki .NET sürümlerine bakmam gerekiyordu, ancak açıkçası 4.0 içinde –