2009-05-07 10 views
0

ダイジェストHTTP認証を使用するWebサービス(使用する必要がある)とWebサーバーがあります。私はHttpWebRequestを使用してサーバーと通信します(GETメソッドを使用)。認証に必要なNetworkCredentialsが提供されます。しかし、GetResponse()を呼び出すと、エラー400(Bad request)が発生します。クエリーでダイジェストし、httpダイジェストをダイジェストする

住所:http://info.server.com/someFolder/servlet.do?cmd=get_info&param=value

要求例(完全ではない、唯一の関連のもの):

GET /someFolder/servlet.do?cmd=get_info &のparam =値HTTP/1.1

ホスト: info.server.com

応答:401認証が必要です

2番目のリクエスト:

GET /someFolder/servlet.do?cmd=get_info &のparam =値HTTP/1.1

ホスト:info.server.com

認証:ダイジェスト... URI = "/ someFolder /サーブレット.doという」...(明らかではない完全なヘッダ)

秒の応答:400不正な要求

私は、Webブラウザ(IE、Firefoxの)でこの要求を試みたし、それが動作しますが、そのブラウザを置くようです認可hのuri parthの全体要求uri eader、HttpWebRequestは上記のようにヘッダーをフォーマットします。 HttpWebRequestにAuthorizationヘッダーにURI全体を入れるように強制する方法を知っている人はいますか? また、この問題の別の解決方法がありますか?

ありがとうございました!

答えて

0

我々は同じ問題を抱えている、とAuthorizationヘッダにURLにそれを追跡してきました。 HttpWebRequestはホスト名だけを送信し、完全なURLは送信しないようです。 URLからの

?cmd=get_info&param=value 

を省略します。 IE8とChromeの両方で、パラメータを含む完全なURLが使用されます。

これをダイジェスト認証のカスタム実装で修正できました。 this answerを参照してください。

関連する問題