![](/img/trans.png)
[英]C# HttpWebRequest Medium Blog returns 403 Forbidden but Site is Open
[英]C# HttpWebRequest - PreAuthenticate: Still returns 401 forbidden (HTTPS)
我想就我快速編寫的以下代碼向您尋求幫助,因為我總是得到“403 FORBIDDEN”。
HttpWebRequest pozadavek = (HttpWebRequest)WebRequest.Create("LINK THAT ASKS FOR AUTHLOGIN"); //https
System.IO.StreamReader stream = null;
System.String result = null;
public Form1()
{
InitializeComponent();
pozadavek.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
pozadavek.Credentials = new NetworkCredential("NAME", "PASS");
pozadavek.PreAuthenticate = true;
}
private void Form1_Load(object sender, EventArgs e)
{
WebResponse webresponse = pozadavek.GetResponse(); //throws an exception:403 forbidden
stream = new System.IO.StreamReader(webresponse.GetResponseStream());
result = stream.ReadToEnd();
this.webBrowser1.DocumentText = result;
}
您嘗試打開的站點需要基本身份驗證。 底線是,您需要在請求中包含 base64 編碼的用戶名/密碼。 幸運的是,.Net 可以為您做到這一點。 像這樣構建您的請求:
var credCache = new CredentialCache();
credCache.Add(new Uri("https://is.vsfs.cz/auth"), "Basic",
new NetworkCredential("user", "pwd"));
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Credentials = credCache;
這是一篇文章,更詳細地解釋了 .Net 中如何處理各種身份驗證方案。
此代碼適用於 4 我...
Uri address = new Uri("https://www.example.com");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
string authInfo = username + ":" +password;
authInfo = Convert.ToBase64String(Encoding.UTF8.GetBytes(authInfo));
request.Headers.Add("Authorization", "Basic " + authInfo);
NetworkCredential myCreds = new NetworkCredential(username, password);
request.Credentials = myCreds;
request.Method = WebRequestMethods.Http.Get;
request.AllowAutoRedirect = true;
request.Proxy = null;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.