用于 webclient的HttpUnit API说“只有在对指定领域提出挑战时才会发送授权标头”。在这种情况下,挑战是什么意思?HttpUnit 如何识别挑战?
问问题
570 次
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 回答