2

用于 webclient的HttpUnit API说“只有在对指定领域提出挑战时才会发送授权标头”。在这种情况下,挑战是什么意思?HttpUnit 如何识别挑战?

4

2 回答 2

3

这是指 HTTP 身份验证的工作方式:

访问受保护的 URL 时(第一次,请求中不包含凭据),服务器将发回一个响应,该响应的状态代码为 ,401 Unauthorized 并且WWW-Authenticate标头设置为Basic realm="My Realm". 这表明给定 URL 需要基本身份验证,并且领域名为“我的领域”。这是挑战 - 服务器通知用户代理它尝试访问的 URL 需要身份验证,并且它应该发回用户凭据。用户代理通常会提示用户输入凭据,然后重试请求,这次将Authorization标头设置为Basic rXflcjMwYXxz第二部分是 Base64 编码的用户名和密码对。

如果是您链接到的 HttpUnit 方法,您会看到它需要一个领域、用户名和密码。我想当访问 URL 时,如果它从服务器返回 401(挑战),它会将您传递给它的领域与响应中的领域进行比较;如果匹配,它将尝试使用提供的用户名和密码进行身份验证。

参考:

于 2011-05-16T23:40:33.070 回答
2

当服务器响应 401 错误时,HttpUnit 会抛出 AuthorizationRequiredException。我们可以使用异常的 getParameter("realm") 来获取领域并使用该领域名称再次发送请求。

于 2011-05-18T04:04:11.787 回答