重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

単にIDを返すだけのWebサーバに、telnetから80番ポートにアクセスし、HTTPリクエストを送るとレスポンスを受け取れるのに
ブラウザからアクセスするとレスポンスを受けとれずタイムアウトになってしまいます。

WireSharkでパケットを調べてみると、ブラウザからアクセスした場合も、
問題なくWebサーバからIDが返されていることは確認できました。
しかし、ブラウザではサーバからのレスポンス待ち状態が続き、しばらくするとタイムアウトになってしまいます。

また、他のPCのブラウザから該当のWebサーバにアクセスすると、
問題なくレスポンスをうけとりIDがブラウザに表示されることも確認しました。

何が原因でこういうことが起こるのでしょうか。
教えて頂けると大変助かります。


OS:Windwos 7 32bit
ブラウザ:Explore8,Chrome

サーバからのレスポンス(telnetでアクセスした際に取得したもの)
HTTP/1.1 200 OK
Content-Type: text/plain
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Mon, 20 Jan 2014 11:12:37 GMT
Connection: close

SYJ0P48

A 回答 (1件)

おそらくですが、レスポンスヘッダに入っているContent-Lengthの値が


なぜか実際のレスポンスデータの長さより長い値になっていて、
ブラウザはIDを受け取っているんだけど、Content-Lengthの値に
なるまでデータの受け取り待ちになっていて、タイムアウトしたんだろう
と思います。

telnetの場合は、たぶんリクエストヘッダにConnection: keep-alive
を設定しないでリクエストしたため、Content-Lengthの設定もなく
サーバー側のレスポンス送信が終了したらコネクションが切断され、
正常にレスポンス送信完了となったんだと思います。

まず、WireSharkで、ブラウザからのレスポンスのContent-Lengthが
正しい値になっているかどうか確認してみてください。
それが誤りであることが確認できたら、サーバアプリやサーバ設定で
Content-Length値を不正にしてしまうことがないか確認してみてください。
    • good
    • 0
この回答へのお礼

さっそくの回答ありがとうございます。

そういう原因が考えられるのですか。勉強になります。

なぜか今日はブラウザからアクセスしても問題なくレスポンスを受けることができ
表示されました。

次回、同様の現象が起きた際に確認してみたいと思います。

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

お礼日時:2014/01/21 22:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!