【发布时间】:2011-05-16 23:19:32
【问题描述】:
HttpUnit API for webclient 表示“仅在对指定领域提出挑战时才发送授权标头”。在这种情况下,挑战是什么意思? HttpUnit 如何识别挑战?
【问题讨论】:
标签: http-unit
HttpUnit API for webclient 表示“仅在对指定领域提出挑战时才发送授权标头”。在这种情况下,挑战是什么意思? HttpUnit 如何识别挑战?
【问题讨论】:
标签: http-unit
这是指 HTTP 身份验证的工作方式:
当访问受保护的 URL 时(第一次,请求中没有包含凭据),服务器将发回一个响应,其状态代码为 401 Unauthorized 和 WWW-Authenticate 标头设置为类似 @ 987654326@。这表示给定 URL 需要基本身份验证,并且领域名为“我的领域”。这就是挑战 - 服务器通知用户代理它尝试访问的 URL 需要身份验证,并且它应该发回用户凭据。用户代理通常会提示用户输入凭据,然后重试请求,这次将 Authorization 标头设置为 Basic rXflcjMwYXxz 之类的东西,其中第二部分是 Base64 编码的用户名和密码对。
如果是您链接到的 HttpUnit 方法,您会看到它需要一个领域、用户名和密码。我想当访问 URL 时,如果它从服务器返回 401(挑战),它会将您传递给它的领域与响应中的领域进行比较;如果匹配,它将尝试使用提供的用户名和密码进行身份验证。
参考资料:
【讨论】:
当服务器响应 401 错误时,HttpUnit 会抛出 AuthorizationRequiredException。我们可以使用异常的getParameter("realm")来获取realm,然后用这个realm名称再次发送请求。
【讨论】: