Javascript 确定浏览器是否支持windows集成身份验证

Javascript 确定浏览器是否支持windows集成身份验证,javascript,iis,coldfusion,ntlm,Javascript,Iis,Coldfusion,Ntlm,是否有一种方法可以确定浏览器是否支持NTLM,而无需为IIS中的特定站点或目录启用NTLM,也无需显示登录对话框/弹出窗口?最好使用ColdFusion或JS和CF的某种组合来确定这一点。我不希望将此限制为IE,因为其他浏览器(如FF)支持NTLM身份验证。如果您请求一个页面,该页面返回401并说它只接受NTLM,然后浏览器发送另一个HTTP数据包试图响应它,然后它支持NTLM。您不必让IIS这样做——您可以在任何页面上设置响应代码和头请求NTLM。如果您没有收到另一个请求,这意味着客户端无法通

是否有一种方法可以确定浏览器是否支持NTLM,而无需为IIS中的特定站点或目录启用NTLM,也无需显示登录对话框/弹出窗口?最好使用ColdFusion或JS和CF的某种组合来确定这一点。我不希望将此限制为IE,因为其他浏览器(如FF)支持NTLM身份验证。

如果您请求一个页面,该页面返回401并说它只接受NTLM,然后浏览器发送另一个HTTP数据包试图响应它,然后它支持NTLM。您不必让IIS这样做——您可以在任何页面上设置响应代码和头请求NTLM。如果您没有收到另一个请求,这意味着客户端无法通过这种方式进行身份验证


您可以通过将此请求放入IFrame中,然后在外部页面中检查IFrame中发生了什么,从而在客户端上检测到这一点。

基于Lou的回答,您可以在try/catch块中发出cfhttp请求。然后检查响应标题以确定下一步操作。

不幸的是,您可能会被迫使用浏览器嗅探和白名单。

我尝试过这样做,但不幸的是浏览器仍然要求提供凭据。这会破坏整个事情的透明度。基本上,除了透明的NTLM身份验证之外,我不需要任何登录。是否仍有方法抑制此默认行为?我也尝试了Steve的建议,但似乎使用这种技术,CF服务器发送数据,而不再从客户端传递数据。这将导致一个持续的401响应。您看到了如果尝试生成XMLHTTPRequest会发生什么吗?我还将尝试查看其他强制生成HTTP请求的方法(img、脚本、链接等标记)会发生什么。也许有一个浏览器会自动失败(而不是弹出)。XMLHTTPRequest适用于Firefox,但不适用于IE。在Firefox中,您可以让XHTPRS在后台运行并抑制弹出窗口,但据我所知,在IE或任何其他浏览器中都无法做到这一点。我尝试使用img、script和link标记,包括在运行时动态构建它们。到目前为止没有运气。可能需要将浏览器检测和这些技术结合起来——祝你好运。不幸的是,这不起作用,因为无法判断浏览器是否配置为使用特定页面作为NTLM身份验证的可信源。