.NET 类的默认用法是设置属性,HttpClient然后要求类实例执行 HTTP 请求。如果目标需要基本授权,则会发生以下情况(这些类在后台执行此操作,Fiddler 显示正在发生的事情):HttpWebRequestCredentials
- 第一个请求是在没有授权标头的情况下发送的
- 服务器拒绝并以 HTTP 401 响应
- 客户端这次重新发送了相同的请求,其中Authorization
Credentials标头包含来自属性的正确编码数据
这是默认行为。因此,除非用户验证他的应用程序并采取额外的步骤,否则每个请求都会发送两次——第一个请求会被普遍拒绝。
我的问题是 - 这种默认行为的原因是什么?客户端类具有其Credentials属性集,因此它假设用户想要使用这些凭据进行身份验证。为什么不直接在第一个请求中发送适当的标头?做后者会以某种方式损害客户吗?