通常の HTML 応答とともに、すべての要求に対して 401 認証エラーを送信するサーバーへの接続を確立しようとしています。例 ただし、一緒に送信された HTML 応答も読み込んで、それを解析できるようにしたいと考えています。LiveHTTPHeaders を使用してキャプチャされたヘッダー交換の例: 明らかに、content-length はゼロではありません。Firefoxはそれがjavascriptであることを示しています。
https://172.31.1.251:1003/fgtauth?73e285357b2dc5cc
Request:
GET /fgtauth?73e285357b2dc5cc HTTP/1.1
Host: 172.31.1.251:1003
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Response:
HTTP/1.x 401 Unauthorized
WWW-Authenticate: Fortigate
Content-Length: 1091
Connection: Keep-Alive
Cache-Control: no-cache
Content-Type: text/html
この時点で、Firefox でフォームが開き、ユーザー名とパスワードの入力を求められます。
https://172.31.1.251:1003/
Request:
POST / HTTP/1.1
Host: 172.31.1.251:1003
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1b4) Gecko/20090423 Firefox/3.5b4 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: https://172.31.1.251:1003/
Content-Type: application/x-www-form-urlencoded
Content-Length: 93
magic=73e285357b2dc5cc&username=uuxx&password=xxuu&4Tredir=http%3A%2F%2Fwww.google.com%2F
Response:
HTTP/1.x 401 Unauthorized
WWW-Authenticate: Fortigate
Content-Length: 924
Connection: Keep-Alive
Cache-Control: no-cache
Content-Type: text/html
この時点で、別の URL にリダイレクトされます。ただし、私が抱えている問題は、401 Unauthorized と一緒に送信される長さ 924 のコンテンツを取得する方法です。そのコンテンツは、さらにやりたいことを行うのに役立つためです。しかし、まさにその行:
WebResponse loginResponse = loginRequest.GetResponse();
例外をスローします。
実際のコンテンツにたどり着くのに役立つ提案があれば感謝します。
ありがとう。