HTMLについての質問です。


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

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

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/10/17 09:35:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント35pt

ご質問の条件に合うような実験を試みましたが、現象が再現しません。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

id:winebarrel

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

>もう少し具体的に状況をお知らせください。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ヘッダが原因ですかね…

2008/10/10 12:53:36
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント35pt

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

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


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

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

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

となっています。


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

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

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


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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません