ブラウザでHTTPレスポンスが受け取れない原因とは?

このQ&Aのポイント
  • ブラウザからアクセスするとレスポンスを受け取れずタイムアウトになってしまいます。
  • 他のPCのブラウザからは正常にレスポンスを受け取れることが確認されています。
  • WireSharkでのパケット調査では、問題なくレスポンスが返されていることが確認されています。
回答を見る
  • ベストアンサー

ブラウザでHTTPレスポンスがうけとれない

単に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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

おそらくですが、レスポンスヘッダに入っているContent-Lengthの値が なぜか実際のレスポンスデータの長さより長い値になっていて、 ブラウザはIDを受け取っているんだけど、Content-Lengthの値に なるまでデータの受け取り待ちになっていて、タイムアウトしたんだろう と思います。 telnetの場合は、たぶんリクエストヘッダにConnection: keep-alive を設定しないでリクエストしたため、Content-Lengthの設定もなく サーバー側のレスポンス送信が終了したらコネクションが切断され、 正常にレスポンス送信完了となったんだと思います。 まず、WireSharkで、ブラウザからのレスポンスのContent-Lengthが 正しい値になっているかどうか確認してみてください。 それが誤りであることが確認できたら、サーバアプリやサーバ設定で Content-Length値を不正にしてしまうことがないか確認してみてください。

komanoze
質問者

お礼

さっそくの回答ありがとうございます。 そういう原因が考えられるのですか。勉強になります。 なぜか今日はブラウザからアクセスしても問題なくレスポンスを受けることができ 表示されました。 次回、同様の現象が起きた際に確認してみたいと思います。 ありがとうございました。

関連するQ&A

  • Sorarisにおいてのsquidでのhttpレスポンスについて

    初めましてNo18-RBと申します。よろしくお願いします。 Soraris8でsquid-2.5.STABLE3を利用してプロキシサーバを構築しております。 Webサーバ1 -- Webサーバ2 -- プロキシサーバ -- インタネット このような構成になっているのですが、Webサーバ2はSoraris8でApache1.3.28を使用しmod_proxyモジュールでリバースプロキシを実現しています。 Webサーバ2とプロキシサーバ間の通信は8080ポートです。 Webサーバ1 -- Webサーバ2間の通信は80ポートです。 そこでインターネットからWebサーバ1のコンテンツにアクセスした際にプロキシサーバ→Webサーバ2とリバースプロキシされていくのですが、Webサーバ1からリダイレクトされたレスポンスのhttpヘッダーLocation部のURLの変化についてですが、 Webサーバ1 -- Webサーバ2へは Location:http://111.222.333.444(Webサーバ1のIP)/dir/ Webサーバ2 -- プロキシへは Location:http://AAA(Webサーバ2のhttpd.confのServername):8080/dir/ プロキシサーバ -- ブラウザへは Location:http://AAA(Webサーバ2のhttpd.confのServername):8080/dir/ のままレスポンスが返ってしまいリダイレクト先へアクセスできない状態です。Squidの設定でレスポンスのURLを変化させるような処理はできないのでしょうか? 以上よろしくお願い致します。

  • HTTPプロトコルについて

    telnetでwww.yahoo.co.jpサーバの80番ポートに接続し、 GET / HTTP/1.1 Host:www.yahoo.co.jp というリクエストをしたところ、画像のようなレスポンスが帰ってきました。 この空行の下にある数字はいったい何なんでしょうか?

  • リクエストを受けたサーバ以外からのレスポンス

    質問なのですが、 1. ユーザがブラウザAからリクエストXを発行して 2. あるWebサーバBがリクエストXを受け付けて 3. WebサーバBがリクエストXの情報を、別のWebサーバCに渡して 4. WebサーバCがブラウザAへ直接レスポンスを返す。 というのはHTTPの仕様上では可能なのでしょうか? また、WebSocketやWebRTCなどを使えば可能でしょうか? ・WebサーバBとWebサーバCはIPアドレスが異なる前提でお願いします ・言語やフレームワークは無視して、仕様として可能かが知りたいです

  • リクエストメッセージ、レスポンスメッセージを見る方法

    webサーバーとクライアントとのやりとりについて勉強したいと思い、リクエストメッセージとレスポンスメッセージを見るためにtelnetを利用してyahooなどへの接続を試みたのですが、telnetでの接続ができません。telnetで接続するには、どうしたらいいでしょうか?また、telnetを利用する以外でリクエストメッセージとレスポンスメッセージを見る方法はないでしょうか?よろしくお願いします。

  • ブラウザのHTTPリクエストを参照したい

    画面遷移時にブラウザ側でHTTPリクエストがどのように発行されているかを参照する手段を探しています。 Webサーバー側でHTTPリクエストの内容をログに出力する方法はわかっているのですがサーバー操作は不可なのでクライアント側で参照する方法を探しています。 ツール、設定なんでもいいのでアイデアがあれば教えていただけないでしょうか。 よろしくお願い致します。

  • HTTP/1.1 200 OKを送信する方法

    レスポンスとして下記の内容を送信したいです。 どのような関数を使用するのか、参考になるサイトなど ご存知でしたら教えてください。 「日付」「サーバー名」の取得はどうすればいいのでしょうか? よろしくお願いします。 HTTP/1.1 200 OK Date: Tue, 03 May 2005 01:05:20 GMT Server: サーバー名 Connection: close Transfer-Encoding: chunked Content-Type: text/plain

    • ベストアンサー
    • PHP
  • ebサーバーにブラウザからどうしてもアクセスできない

    RedHatLinux7.1J APACHE1.3.19 上記の環境でwebサーバーを立ち上げました。 このサーバーの下には10数台のwindowsクライアントがぶら下がっています。 この中で一台だけ、どうしてもブラウザ(IEとネスケ両方とも)から サーバーにアクセスできないクライアントがいます。 他のクライアントからは全てブラウザからサーバーにアクセスできるにも かかわらずです。 でもこのコンピューターからtelnetで 「telnet httpdサーバー名 ポート番号」       ↓ 「GET http://xxx.xx.xxx.xx/index.html」 と入力すると、index.htmlの内容を見ることができます。 というわけでサーバーの問題ではなく、クライアント側の問題であると思うのですが、 どうしてブラウザからのアクセスができないのでしょうか。 宜しくお願いいたします。

  • ヘッダーは500エラー、ブラウザでは表示OKの場合

    現在PHPで外部からのGET値を受信し、受信に成功した場合「OK」と出力しレスポンス200、失敗の場合はレスポンス500を返すプログラムを設置しているのですが、先日サーバー移転をしたところ、 http://www.hoge.com/sample.php?id=1 ブラウザげGET値を含むURLを叩くと問題なくOKと表示されるのですがヘッダーのみで送信をするとレスポンスが「Status: HTTP/1.0 500 Internal Server Error」となってしまいます。 これはなぜでしょうか? 試しにPHP(sample.php)のトップに明示的に「header("HTTP/1.0 200 OK");」と書いてみましたがこれでもやはりレスポンスは「500エラー」でした。 ブラウザで叩くと正しく表示され、レスポンスが500を返してしまうことについて解決方法などありましたらアドバイス等よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ブラウザから直接HTMLを取得する方法

    IEの「表示」-「ソースの表示」のようなイメージで、現在ブラウザに表示されているHTMLを取得するのには、どのような方法があるでしょうか? MSXML等を利用してWebサーバからHTML(HTTPレスポンス)を取得する方法はネット上で見かけますが、ブラウザから直接HTMLの情報を取得したいのです。 どうぞ、宜しくお願いいたします。

  • HTTP 403の意味

    以前まで普通に見れていたHPが「HTTP 403 エラー」表示で見れなくなりました。 ――――――――――――――――――――― Web サイトによってこのページの表示を拒否されました 可能性のある原因: ・この Web サイトを表示するにはログインが必要です。 詳細情報 このエラー (HTTP 403 アクセス不可) は、Web サーバーに接続できましたが、この Web ページを表示するアクセス許可がなかったことを意味します。 HTTP エラーの詳細はヘルプを参照してください。 ――――――――――――――――――――― ここ数カ月訪問していなかったのですが、以前は普通に入れていました。 このHPはある作家さんが個人で運営するサイトでその作家さんの活動状況などが載せてあり、 閲覧する際も特にID、パスワード制でもなくログインなども必要ありませんでした。 訪問した際も何かアクションを起こした事もないです。(なので規約違反?とかもないと思います) 原因は何でしょうか? 管理人さんにお問い合わせする手段もなく困っています。 分かる方がおられましたらご助言お願致しますm(__)m