为什么Basic Auth客户端默认行为在发送凭据之前需要401?

时间:2016-03-09 23:51:39

标签: http httpwebrequest wget basic-authentication

我目前正在尝试了解使用HTTP Basic Auth进行HTTP API草图的一些技术含义。

我注意到,C# HTTP Web Requestwget默认情况下都会首先发送不带凭据的请求,从而生成401从服务器,然后发送基本身份验证信息。 (感谢SO自动建议,it seems browsers do it the same way。)

你可以让wget始终通过--auth-no-challenge发送,但它不是默认值。

HttpWebRequest object will always request a 401 first, unless you manually assemble the authentication header。 (即使使用PreAuthentication选项。)

是否有特定原因(在HTTP规范中)?这些以开发人员为中心的工具"似乎很奇怪。当我已经指定我想要基本的auth + user + passwd时,我会做身份验证dacne吗?

从(希望)相关的RFC2617添加引用:( emph.mine)

  

希望使用来源验证自身身份的用户代理   服务器 - 通常,但不一定,在收到401 后   (未经授权) - 可以通过包含授权标题字段来实现   请求。

0 个答案:

没有答案