【问题标题】:XmlHttp Request Basic Authentication IssueXmlHttpRequest 基本身份验证问题
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 谢谢,这个链接完美地总结了我的经历。我以为这就是发生的事情,我只是想确保我没有把事情搞砸。
  • 直接使用WinHTTP COM对象也有同样的问题。我不敢相信这个问题很久以前就没有解决。
猜你喜欢
  • 2015-07-22
  • 2014-08-04
  • 2018-12-20
  • 2021-05-17
  • 1970-01-01
  • 2013-05-16
  • 2010-12-11
  • 2011-10-25
  • 1970-01-01
相关资源
最近更新 更多