すべてのカテゴリ » インターネット・パソコン » ソフトウェア » ソフトウェア全般

質問

終了

htmlについての質問です。metaタグのrefresh先のソースを見る方法ってありますか?
リダイレクト先とリダイレクト元の中間のページです。

いろいろ検索したのですが、無理でしたのでお願いします。

  • 質問者:Sooda! くん
  • 質問日時:2008-10-04 01:30:37
  • 0

並び替え:

質問の内容からある程度の経験のある方と思われますので、PC等の基本的事項は省略して話を進めます。

まず、誤解の無いように補足をしておきますが、似たような動作をさせる方法が数通りあります。頁リダイレクト(アクセスした時にヘッダーで飛び先を指定される)とネットスケープクライアントプル(metaタグで指定される)とサーバプッシュ(サーバから新しい頁が送られてくる)とJavaScript(Open.Window等)とは丸きりの別物です。ですからJavaScriptとmetaタグのrefreshとは相互作用も関係も全く有りません。

相談者さんの質問を読む限り、リダイレクトとクライアントプルの説明で足りそうなので、サーバプッシュとJavaScriptは省略します。サーバプッシュは一頃流行したのですが今は下火になったのと、説明が複雑になる事、JavaScriptもプログラム解析が必要になったり、サーバから更にJSファイルをダウンロードして調べなければならない事もあります。

この様な目的では最初のシーケンスから順番に追跡するのが鉄則です。ブラウザで読むとリダイレクトなどを実行されてしまうのでtelnetで操作します。調べたいサイトのURLが『htttp://www.foo.com/~boo/index.html』であると仮定します。

telnetを起動して『o www.foo.com 80』でポート番号80(HTTPポート)でサイト(サーバ)を開きます。この時、画面は崩れますが無視して続行します(キーを入力するとサーバーに送られてしまうので我慢してください)。

『GET ドキュメントURI』でドキュメントを開きます。元のサイトのURLが『htttp://www.foo.com/~boo/index.html』ですから『GET /~boo/index.htm HTTP/1.0』です。サーバ名から後を送ります。ドキュメントが表示され接続が一端切れます。

ここで『Location: htttp://www.foo2.com/~boo2/index2.htm』と書かれていたらリダイレクトです。一般のブラウザはセキュリティレベルを指定していない場合はこのリダイレクトはユーザに知られる事なく指定された頁にアクセするように作られています。

Get後、ここで『Content-type: text/html』と書かれていたら中身はHTML等のドキュメントです。クライアントプルかJavaScriptで頁が移動する可能性があります。送られてきた中身を見てください。

『<META htttp-equiv="refresh" content="0;URL=htttp://www.foo2.com/~boo2/index2.htm">』等と書かれていれば相談者さんの仰るMETAタグでの転送(クライアントプル)になります。ちなみにこの転送はJavaScriptとは無関係に動作し、クライアントからアクセス要求を出すのでクライアントプルと呼ばれます。

『<META htttp-equiv="refresh" content="0;URL=htttp://www.foo2.com/~boo2/index2.htm">』の意味は、リフレッシュ(指定されたURLを指定された秒数後に再表示せよ)です。

で、リダイレクトやクライアントプルで得られたURLは『htttp://www.foo2.com/~index2.htm』ですから、これを再び『o www.foo2.com 80』で次の指定先を開いて『Get /~boo2/index2.htm HTTP/1.0』と送り、必要なドキュメントが得られるまでこの作業を繰り返して行きます。

# なんか、Soodaのバグみたいで回答のリンクが変な事になっています…なので本来httpと書く所をhtttpと書き直しましたので、htttpをhttpと読み直してください。

*****

追加補足です。DNSでバーチャルホストを実現している場合、エラーが返ってきたり、予定していたサーバに接続できない場合も有ります。その場合は、

『Host: www.foo.com:80』

と追加する必要があります。あと、基本的な事だったので本文中には記述しわすれましたが、ヘッダーの送信には改行を2回続けて送る必要があります。サーバは空行が送られてきた時にリクエストが完了したと解釈するように作られているからです。

この回答の満足度
  
参考になりました。回答ありがとうございました。

javascriptをoffにすると、metaタグのrefreshは利かなくなると思います。
その状態で、ブラウザで開けばソースが表示できるのではないでしょうか?

telnetが使えるなら、

> telnet xxx.com 80
GET xx.html HTTP/1.0

と入力すれば、ソースが取得できます。


------------
上の方が書いておられるとおり、JavaScriptは関係ないですね。
間違ったことを書いてしまい、すみません。

削除しようかと思いましたが、それも分かりにくいと思うので、コメントを追記させていただきます。

  • 回答者:匿名希望 (質問から23分後)
  • 1
この回答の満足度
  
参考になりました。回答ありがとうございました。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る