人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

HTMLについての質問です。

iframeを使ってあるページを表示しようとした場合に、そのページがレスポンスとして「301 Moved Permanently」を返すと、親フレームごと移動先のページに遷移してしまうのですが、回避する方法はあるでしょうか?

例えば、以下のHTMLで「http://foo.bar/zoo/」が301を返すと、iframe内のコンテンツではなく、ウィンドウ全体がページ遷移してしまいます。

<html>
<body>
<iframe src="http://foo.bar/zoo/"></iframe>
</body>
</html>

●質問者: winebarrel
●カテゴリ:コンピュータ インターネット
✍キーワード:HTML ウィンドウ コンテンツ フレーム レスポンス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

ご質問の条件に合うような実験を試みましたが、現象が再現しません。iframe内は Yahoo!JAPAN へジャンプします。

もう少し具体的に状況をお知らせください。301先がCookieを要求したりSSLサイトだったりすると話が変わってきますので。

http://localhost/hoge.html(ローカル)

<html>

<body>

<iframe src="http:/xxxx/hoge/hogehoge.html"></iframe>

main

</body>

</html>


http://xxxx/hoge/hogehoge.html(インターネット上)

<html>

<body>

hogehoge

</body>

</html>


http://xxxx/hoge/.htaccess(インターネット上)

Redirect 301 / http://www.yahoo.co.jp/

サーバ環境:WindowsXP(SP3) + Apache 2.2.8

クライアント環境:WindowsXP(SP3)(サーバと同じ)+IE7/IE6/FireFox3/Safari3

◎質問者からの返答

回答ありがとうございます。

>もう少し具体的に状況をお知らせください。301先がCookieを要求したりSSLサイトだったりすると話が変わってきますので。

すみません。もう少し具体的に書きます。

質問の現象が発生するのは、以下のHTMLです。

-----

<html>

<body>

<iframe src="http://wikiwiki.jp/lua/"></iframe>

</body>

</html>

-----

このHTMLをFirefox3(WinXP)で開くと、ウィンドウ全体が「http://wikiwiki.jp/lua/」に遷移してしまいます。

telnetで直接アクセスしたところ、以下のようなレスポンスが返ってきました。

-----

~$ telnet wikiwiki.jp 80

Trying 202.61.22.173...

Connected to wikiwiki.jp.

Escape character is '^]'.

GET /lua HTTP/1.1

Host: wikiwiki.jp

HTTP/1.1 301 Moved Permanently

Date: Fri, 10 Oct 2008 03:43:48 GMT

Server: Apache

Location: http://wikiwiki.jp/lua/

Content-Length: 231

Content-Type: text/html; charset=iso-8859-1

<html><head>

<title>301 Moved Permanently</title>

(省略)

-----

301が返るレスポンスで共通に起きる現象かと思ったのですが、違うみたいですね。すみません。


-----

(追記)

Locationヘッダが原因ですかね…


2 ● pahoo
●35ポイント

詳しい情報をありがとうございます。現象を再現できました。

けれども、再現確認できただけで具体的な解決策をお示しできないので、ポイントは不要で結構です。


お気づきのように Locationヘッダの解釈問題なのですが、これはブラウザ依存します。先ほどと同じ WindowsXP(SP3) 環境では

再現できたもの‥‥IE6, IE7, FireFox3, Safari3

再現できないもの‥‥Opera9.2

となっています。


なお、httpの仕様書によると、"301 Moved Permanently" の際には

新しい恒久的 URI は、レスポンス内の Location フィールドによって与えられるべきである

とあるので、wikiwiki.jp のヘッダは適切です。


しかし困りましたね――iframe内が読み込まれる前にonloadをかけたとしても、JavaScriptでhttpヘッダをチェックするのは無理でしょうし、いちいちスクリプトを書くわけにも行かないでしょうし――やはり iframe は使うなということでしょうか(トホホ)。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ