0

我们需要下载和解析一个特定的安全网页。从这个解析的数据中,我们需要做很多其他的事情......所谓的“多重身份验证”部分如下所示:

如果您在 IIS 上托管了网站并打开了集成安全功能(关闭了匿名浏览),您会注意到在您输入该页面的 url 的那一刻,您的浏览器会弹出一个窗口,询问您的Windows 网络凭据...这个特定的外部网页有类似的东西。

奇怪的是它两次显示该窗口。只有当我提供我的凭据两次时,页面才会正确加载。是的,我必须提供我的凭据两次!!!我没有遇到过这样的场景。我确实注意到了弹出窗口的标题,并认为这是我必须提供我的凭据的 URL。

为了下载网页,我使用了 HttpWebRequest 和 HttpWebResponse 对象。对于网络请求对象,我必须适当地设置凭据。为此,我创建了一个 CredentialsCache 对象并添加了两个凭据(示例代码参考http://msdn.microsoft.com/en-us/library/system.net.credentialcache.aspx)。仍然没有运气。

有没有人遇到过这种情况?

4

2 回答 2

1

奇怪的是它两次显示该窗口。只有当我提供两次凭据时,页面才会正确加载。是的,我必须提供我的凭据两次!!!

从浏览器方面来看,这听起来像是 html 的一个简单问题。我经常在与完全限定 URL 不一致的安全站点上看到这种情况。例如,如果您访问https://mywebsite.com/default.html,并且在该 html 中它有一个图片链接,如 <img src="http://MyWebsite.com/picture.jpg">,那么您将继续得到两个提示。在这种情况下,原因是 URL 区分大小写,但也可能是它使用了完全不同的名称,例如“www.mywebsite.com”。

另一种可能性是服务器端重定向到另一个安全 URL。您可以通过将 HttpWebRequest.AllowAutoRedirect 设置为 false,然后检查响应标头是否有重定向来确定是否发生这种情况。

只是对可能导致这种情况的原因有一个想法?这可能会非常特定于您的环境,因此很难提供太多帮助。

于 2009-09-08T23:53:34.697 回答
0

为了补充 csharptest 所指出的内容,我会查看 Fiddler 中的流量(或任何您喜欢的 http 调试)以尝试查看发生了什么。

于 2009-09-08T23:55:28.407 回答