【发布时间】:2010-11-24 10:03:33
【问题描述】:
我有以下代码创建 xmlhttp 类的服务器端对象。我正在尝试连接到需要基本身份验证的站点。我可以让它与下面的代码一起工作。
有什么问题?好吧,我正在使用公开调用传递凭据。仅此还不够。我还必须使用手动计算的 base64 编码的用户名:密码组合设置授权标头。如果我尝试设置标头而不将凭据传递给 open 调用,则会失败。说我疯了,但是当我将凭据传递给公开时,这就是我应该做的所有事情。如果我设置标题,这就是我应该做的。正确的?两者都做似乎有些不对劲。对吧?
这是错误还是故障?
附加背景是: IIS 5 和 ASP 经典 省略两项之一时收到的错误是 HTTP 状态 401: “您无权查看此页面 您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 WWW-Authenticate 标头字段。"
由于 IIS 发出请求,我无法使用 Fiddler 检查它:-(
Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
xmlhttp.setTimeouts 5000, 5000, 10000, 10000 'ms - resolve, connect, send, receive
xmlhttp.open "GET", "http://example.com/", False, "username", "password"
xmlhttp.setRequestHeader "Authorization", "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
xmlhttp.send
【问题讨论】:
-
您当然可以使用 Fiddler 检查此类请求。 ServerXMLHTTP 基于 WinHTTP;见fiddler2.com/fiddler/help/hookup.asp#Q-WinHTTP
-
@Eric:虽然 OP 需要在 IIS 服务器上执行此操作,但他可能有权也可能没有权限。
标签: authentication asp-classic xmlhttprequest