ASP.NET HTTP授权标头

Cod*_*ody 25 c# asp.net httpwebrequest

我想知道为什么我的asp.net应用程序在命名为"授权"时不会将标题添加到我的帖子中,但是当我更改一个字符时,它会正常工作,比如说"授权".在其他网站的文档中,他们总是使用"授权"这个名称,所以我也想,在这一点上,我只是想知道为什么.

我已经阅读了一些关于此的主题,但没有找到任何合理的原因.

这是我的代码如下:

string fileName = "c:\\xyz.xml";
string uri = "http://myserver/Default.aspx";
req = WebRequest.Create(uri);
req.Method = "POST";
req.ContentType = "text/xml";
byte[] authBytes = Encoding.UTF8.GetBytes("DDSServices:jCole2011".ToCharArray());
req.Headers.Add("Authorization", "BASIC " + Convert.ToBase64String(authBytes) );
req.Headers.Add("test", "test");
UTF8Encoding encoder = new UTF8Encoding();
byte[] data = encoder.GetBytes(this.GetTextFromXMLFile(fileName));
req.ContentLength = data.Length;
Stream reqStream = req.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
req.Headers.Add("Authorization", "BASIC" + Convert.ToBase64String(authBytes));
System.Net.WebResponse response = req.GetResponse();
System.IO.StreamReader reader = new StreamReader(response.GetResponseStream());
string str = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

另一个令人讨厌的是当我通过fiddler添加监视变量时,它工作正常.

Ind*_*ent 42

我遇到了一个问题,如何将标识符/身份验证添加到标头.我通过以下方式找到了解决方案.

string _auth = string.Format("{0}:{1}", "myUser","myPwd");
string _enc = Convert.ToBase64String(Encoding.ASCII.GetBytes(_auth));
string _cred = string.Format("{0} {1}", "Basic", _enc);
req.Headers[HttpRequestHeader.Authorization] = _cred;
Run Code Online (Sandbox Code Playgroud)

这给了我想要的那些标题(粘贴Wireshark描述),

授权:基本bXlVc2VyOm15UHdk\r \n
凭据:myUser:myPwd


小智 11

对于HTTP基本授权,您应该使用Credentials属性.

req.Credentials = new NetworkCredential("DDSServices", "jCole2011");

这应该做你想要的.而不是设置Authorization标头.

  • NetworkCredential仅在收到401后发送Authentication头.这可能不是你想要的......使用旧时尚方式:`var credentialBuffer = new UTF8Encoding().GetBytes(aUserName +":"+ aPassword); request.Headers ["Authorization"] ="Basic"+ Convert.ToBase64String(credentialBuffer);` (9认同)
  • @WillHughes那不是真的.我尝试使用PreAuthenticate = true但它没有用.您发布的链接验证您是否需要第一次捕获401."属性值类型:System.Boolean如果发生身份验证,则发送带有请求的HTTP Authorization标头为true;否则为false.默认值为false." (2认同)