XmlHttpRequest基本身份验证问题

时间:2009-08-31 17:44:11

标签: authentication asp-classic xmlhttprequest

我有以下代码创建xmlhttp类的serverside对象。我正在尝试连接到需要基本身份验证的网站。我能够使用下面的代码。

有什么问题?好吧,我正在使用公开呼叫传递凭据。仅此还不够。我还必须使用手动计算的base64编码的用户名:密码组合设置授权标头。如果我尝试设置标头而不将凭据传递给打开的呼叫,则会失败。叫我疯了,但是当我把证书传递给公开时,我就应该这么做。如果我设置标题,那就是我应该做的全部。对?做两件事似乎有些不对劲。正确?

这是一个错误还是一个小故障?

其他背景是: IIS 5& ASP Classic 当省略两个项之一时收到的错误是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

1 个答案:

答案 0 :(得分:3)

我相信你已经达到了this已知的限制(或错误),可以归结为msxml2缺乏(或不正确)支持“协商”认证机制,这意味着你必须强制解决问题(完全通过自己添加授权标题来绕过错误进行的协商。