2009-08-31 41 views
3

我有以下代碼可以創建xmlhttp類的服務器端對象。我正嘗試連接到需要基本身份驗證的站點。我能夠得到這個與下面的代碼一起工作。XmlHttp請求基本身份驗證問題

有什麼問題?那麼我使用公開電話傳遞憑證。僅這一點是不夠的。我還必須使用手動計算的base64編碼用戶名:密碼組合來設置授權標頭。如果我嘗試設置標頭而不將憑據傳遞給公開呼叫,則會失敗。叫我瘋了,但是當我將證書傳遞給公開的時候,這就是我應該做的。如果我設置標題,那就是我應該做的。對?做這兩件事似乎是不對的。對?

這是一個錯誤還是一個小故障?

另外的背景是: 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 
+1

您當然可以檢查這樣的請求與Fiddler。ServerXMLHTTP基於WinHTTP;請參閱http://www.fiddler2.com/fiddler/help/hookup.asp#Q-WinH TTP – EricLaw 2009-08-31 20:21:14

+1

@Eric:儘管OP需要在IIS服務器上這樣做,他可能會或可能沒有權限執行此操作。 – AnthonyWJones 2009-09-01 08:41:51

回答

3

我相信你打,可以歸結爲MSXML2 this已知的限制(或錯誤)缺乏(或不正確)支持「協商」的身份驗證機制,這意味着您必須通過自己添加授權標題來強制執行該問題(繞過錯誤執行的協商),因爲您正在執行此操作。

+0

謝謝,這個鏈接總結了我完美的體驗。我認爲這是發生了什麼,我只是想確保我不會弄髒事情。 – 2009-08-31 18:14:54

+0

直接使用WinHTTP COM對象也有同樣的問題。我不敢相信這個問題很久以前就沒有解決。 – Bob77 2010-01-18 04:33:26