5

ダイジェスト認証が必要な LAN (http://) サーバーと通信しようとしています。

uses IdHttp, IdAuthenticationDigest;

...

begin
  IdHttp1 := TIdHttp.Create(nil);
  try
    IdHttp1.Request.Username := 'xxx';
    IdHttp1.Request.Password := 'xxx';

    Result := IdHttp1.Get(URL)
  finally
    idHttp1.Free;
  end;
end; 

残念ながら、サーバーから IdHttp1.ResponseText としてHTTP/1.0 401 Unauthorizedが返されます。ユーザー名とパスワードを入力すると、Firefox と Chrome の両方が正常に接続されます。

私はSVNとDelphi 7の最新のIndy 10を持っています。

サーバーの http ヘッダー (LAN では 192.168.1.10):

Connecting...
Resolving hostname dm7020hd.
Connecting to 192.168.1.10.
Connected.
Server: webserver/1.0
Date: Thu, 31 Jan 2013 11:28:32 GMT
WWW-Authenticate: Digest algorithm="MD5", realm="Forbidden", qop="auth", opaque="7edfc2c756ad1f795651f15f88c32b25", nonce="d2ef913b753b3b6ad8878b34b93cfc5a"
Content-Type: text/html
Cache-Control: no-store, no-cache, must-revalidate
Expires: Sat, 10 Jan 2000 05:00:00 GMT
Content-Length: 15
Last-Modified: Thu, 31 Jan 2013 11:28:32 GMT
ETag: "753868328"
Connection: close
Disconnected

私はこの問題について多くのことをグーグルで調べましたが、どうやら多くの人が indy 認証に問題を抱えているようです (まったく機能しますか?)。

4

1 に答える 1

7

hoInProcessAuthプロパティでフラグを有効にする必要がありTIdHTTP.HTTPOptionsます。デフォルトでは無効になっています。このフラグTIdHTTP.Get()がないと、サーバーの 401 応答に応答してダイジェスト資格情報を指定する 2 番目の HTTP 要求を送信しません。単に終了し、401 応答を処理して、必要に応じて自分で新しい要求を送信することを期待します。

于 2013-02-01T20:25:24.920 に答える