IIS6中缺少标题(ColdFusion,也可能是其他语言)
问题描述:
我正在使用ColdFusion访问从IIS传递的“授权”标头值。 我在IIS7上没有问题,但是在IIS6中,头文件在ColdFusion中根本不可用。 我试过使用JAVA来访问标题,而且我在其他地方看到人们也遇到过与ASP类似的问题。IIS6中缺少标题(ColdFusion,也可能是其他语言)
奇怪的是,如果我看看FireFug for FireFox的头文件,那么Authorization头文件在那里是可见的,所以我知道IIS服务器正在传递值 - 我只是不能在我的代码中使用它!
有没有人有解决方案?
代码示例:
<!--- Force authorisation --->
<cfheader statuscode="401" statustext="Unauthorized" />
<cfheader name="WWW-Authenticate" value="basic realm=""API""" />
<cfoutput>
#getPageContext().getRequest().getHeader('Authorization')# <!--- Blank on IIS6 --->
<cfdump var="#getHTTPRequestData()#"> <!--- Authorization header missing on IIS6 --->
</cfoutput>
答
你试过IIS中启用这两个 “基本” 和 “匿名” 身份验证?如果没有启用基本功能,IIS 6将不会将该标头暴露给底层应用程序。
唉,是的...我试过各种组合。事实上,在我正常工作的IIS7设置中,我没有启用基本功能。我发现在IIS6服务器上启用Basic时,出现了两个单独的身份验证窗口 - 一个是域名作为域,另一个是我设置的特定域。 我可以看到的唯一区别是,在IIS6服务器上,匿名访问具有附加的用户名和密码,以便匿名访问使用特定的Windows帐户。 –
好吧,我知道通常认证信息通过cgi.auth_user提供。你尝试过使用它吗? –
它在CGI范围中不可用 - 事实上,据我所知,getPageContext()Java方法是用来填充CF的CGI变量的,所以如果我无法使用getPageContext()获取数据,那么我在CGI范围内也无法获得它。 –