具有基本认证和SSL的Web请求(GET)失败

本文关键字:请求 GET 失败 Web 认证和 SSL | 更新日期: 2023-09-27 18:14:50

我已经浏览了stackoverflow中的所有问题,但我仍然无法使我的请求工作。服务器(我无法访问它,所以我不知道那里发生了什么)总是以403响应。

我被告知我必须使用HTTPS的基本认证。起初我用PostMan (Chrome插件)试过,效果很好。Fiddler说PostMan已经发送了这个请求:

GET https://mypage.com/api/topic HTTP/1.1
Host: mypage.com
Connection: keep-alive
Authorization: Basic asdfasdfasdfasdfasdfasdf
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36
Postman-Token: 7363b868-cc6e-1dff-d5d0-c7a0c1924fa7
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: JSESSIONID=imxY132456123Scai90Nrsv

我想在我们的c#应用程序中复制这个,但无论我尝试什么,我都从服务器得到一个403答案。这是我尝试过的c#版本之一:

NetworkCredential nc = new NetworkCredential(Login, Password);
CredentialCache cc = new CredentialCache();
cc.Add("mypage.com", 443, "Basic", nc);
WebRequest request = WebRequest.Create("https://mypage.com/api/topic");
request.Credentials = cc;
request.PreAuthenticate = true;
request.Method = "GET";
WebResponse response = request.GetResponse();

这是根据Fiddler发送的内容:

GET https://mypage.com/api/topic HTTP/1.1
Host: mypage.com
Connection: Keep-Alive

显然有一些东西遗漏了。我想知道哪些是真正必要的(如user-agent?),我希望你能帮助我解决这个问题。

具有基本认证和SSL的Web请求(GET)失败

我可以发誓,我已经尝试过这样设置头。可能是我卡住太久了,犯了一个错误……

我的解决方案是:

string auth = Convert.ToBase64String(Encoding.Default.GetBytes(Login + ":" + Password));
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mypage.com/api/topic");
request.Headers.Add("Authorization", "Basic " + auth);

谢天谢地,现在可以用了