2009-08-31 21 views
3

xmlhttpクラスのserversideオブジェクトを作成する次のコードがあります。基本認証が必要なサイトに接続しようとしています。私はこれを下のコードで動作させることができます。XmlHttp要求の基本認証の問題

問題が何ですか?私は公式な電話を使って資格を渡しています。それだけでは不十分です。手動で計算されたbase64でエンコードされたusername:passwordの組み合わせを使用して承認ヘッダーも設定する必要があります。開いた呼び出しに資格情報を渡さずにヘッダーを設定しようとすると、失敗します。私を狂っていると呼びますが、資格証明書を渡すと、それは私がやるべきことです。ヘッダーを設定すると、それだけでいいはずです。右?両方をすることは、何かが正しくないように思えます。右?

これはバグですか?

追加の背景は次のとおりです。 「あなたが表示する権限がありません あなたがこのページを表示する権限がありません: 2つのアイテムのいずれかが省略されたときにエラーを受信5 & ASPクラシック がHTTPステータス401でIISこのディレクトリまたはページは、WebブラウザがWebサーバーが受け入れるように設定されていないWWW-Authenticateヘッダーフィールドを送信しているため、指定した資格情報を使用しています。 MSXML2に煮詰めすることができ

IISは、私はあなたがthis既知の制限(またはバグ)を打っていると信じてい:-(

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

+1

@ Eric:OPは、IISサーバー上で行う必要がありますが、実行する権限がある場合とない場合があります。 – AnthonyWJones

答えて

3

私はバイオリンでそれを検査することはできませんよ要求を行っているので、 「交渉された」認証メカニズムが欠けている(または間違っている)ことを意味します。つまり、自分が行っているように認証ヘッダを自分で追加するだけで、問題を強制する必要があります(間違って行われた交渉を回避してください)。

+0

ありがとう、このリンクは、私が完全に経験していることを要約しています。私はこれが起こっていると思った、私は物事を汚していないことを確認したかった。 –

+0

WinHTTP COMオブジェクトを直接使用すると、同じ問題が発生します。私はこれがずっと前に修正されていないとは思わない。 – Bob77