相关疑难解决方法(0)

如何使用HttpWebRequest进行摘要式身份验证?

各种物品(1,2)我发现让这个看起来很容易:

WebRequest request = HttpWebRequest.Create(url);

var credentialCache = new CredentialCache();
credentialCache.Add(
  new Uri(url), // request url
  "Digest", // authentication type
  new NetworkCredential("user", "password") // credentials
);

request.Credentials = credentialCache;
Run Code Online (Sandbox Code Playgroud)

但是,这仅适用于没有URL参数的URL.例如,我可以下载http://example.com/test/xyz.html得很好,但是当我尝试下载时http://example.com/test?page=xyz,结果是400 Bad Request消息,服务器日志中包含以下内容(运行Apache 2.2):

Digest: uri mismatch - </test> does not match request-uri </test?page=xyz>
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是摘要规范要求从摘要哈希中删除URL参数 - 但是从传递给的URL中删除参数credentialCache.Add()并没有改变事物.所以它必须是相反的方式,在.NET框架中的某个地方错误地从URL中删除参数.

c# authentication webrequest httpwebrequest digest

19
推荐指数
3
解决办法
2万
查看次数

标签 统计

authentication ×1

c# ×1

digest ×1

httpwebrequest ×1

webrequest ×1