2011-11-17 67 views
2

我正在使用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> 

回答

0

你試過IIS中啓用這兩個 「基本」 和 「匿名」 身份驗證?如果沒有啓用基本功能,IIS 6將不會將該標頭暴露給底層應用程序。

+0

唉,是的...我試過各種組合。事實上,在我正常工作的IIS7設置中,我沒有啓用基本功能。我發現在IIS6服務器上啓用Basic時,出現了兩個單獨的身份驗證窗口 - 一個是域名作爲域,另一個是我設置的特定域。 我可以看到的唯一區別是,在IIS6服務器上,匿名訪問具有附加的用戶名和密碼,以便匿名訪問使用特定的Windows帳戶。 –

+0

好吧,我知道通常認證信息通過cgi.auth_user提供。你嘗試過使用它嗎? –

+0

它在CGI範圍中不可用 - 事實上,據我所知,getPageContext()Java方法是用來填充CF的CGI變量的,所以如果我無法使用getPageContext()獲取數據,那麼我在CGI範圍內也無法獲得它。 –