- 追加された行はこの色です。
- 削除された行はこの色です。
* HTTP Location ヘッダによるリダイレクトに失敗する [#v034017a]
- 元タイトル: editによるリダイレクト
-ページ: BugTrack
-投稿者: [[Data]]
-優先順位: 重要
-状態: 提案
-状態: 完了
-カテゴリー: プラグイン
-投稿日: 2004-03-04 (木) 19:30:13
-バージョン: 1.4.2
**メッセージ [#n2c22f81]
編集の更新でeditプラグインが呼ばれますが、こいつがHTTP 304を返して表示のためのリダイレクトします。~
このときのLocationヘッダのURLが、完全修飾のURLでないため、携帯(N503i)だとリダイレクトしてくれません。~
私は以下の修正をしましたが、適切かどうか不明です。
-header("Location: $script?".rawurlencode($post['page']));
+$url = get_script_uri();
+header("Location: ".$url."?".rawurlencode($post['page']);
----
** ちょっと確認: [#v4b22c87]
- RFC2616: Hypertext Transfer Protocol -- HTTP/1.1
-- ftp://ftp.iij.ad.jp/pub/rfc/rfc2616.txt
----
-RFC2616上のLocationヘッダの定義は、absoluteURI となっているので、get_script_uri()もabsoluteURIを戻すので、RFC上では問題ないと思います。あとは、ちょっと追いきれていません。 -- [[upk]] &new{2004-03-04 (木) 23:24:54};
-現在は$scriptが自動的にget_script_uri()を返すので、このバグは発生しないはずですので、完了にしておきます。 -- [[Ratbeta]] &new{2004-10-10 (日) 16:41:48};
-掘り出しありがとうございます>[[Ratbeta]] しかし残念ながら、確かに $script の生成には get_script_url() が使われるものの、keitai.ini.php には $script を短縮するためのロジックが組み込まれているため、keitaiプロファイルにおいてはこのバグは再現するでしょう。(ここにいたるまでの間に$scriptはFQDNではなくなってしまいます) -- [[henoheno]] &new{2004-10-10 (日) 18:04:18};
-ここでの問題は、自分自身を指したいというニーズが複数あって、それをコードが認識していないということですね。 -- [[henoheno]] &new{2004-10-10 (日) 18:06:06};
-原因はedit.inc.phpではなかったわけですね…。となると、他にLocationで$scriptを用いているプラグイン(amazonとpcomment?)でもこのバグが再現する訳ですね。 -- [[Ratbeta]] &new{2004-10-10 (日) 18:09:06};
-バグが発生するプラグインは上記以外でもbugtrack,newpage,rename,trackerがありますね。 -- [[Ratbeta]] &new{2004-10-10 (日) 18:13:31};
-- [[cvs:lib/func.php]] (v1.4:1.8)
-- [[cvs:plugin/amazon.inc.php]] (v1.4:1.3)
-- [[cvs:plugin/bugtrack.inc.php]] (v1.4:1.17)
-- [[cvs:plugin/edit.inc.php]] (v1.4:1.18)
-- [[cvs:plugin/newpage.inc.php]] (v1.4:1.10)
-- [[cvs:plugin/pcomment.inc.php]] (v1.4:1.34)
-- [[cvs:plugin/rename.inc.php]] (v1.4:1.16)
-- [[cvs:plugin/tracker.inc.php]] (v1.4:1.24)
-その通りです :) -- [[henoheno]] &new{2004-10-10 (日) 19:30:10};
-1) Locationヘッダを利用している箇所は get_script_uri() を呼ぶことで、常に絶対パスを用いる様に修正しました。 2) そんなにコストがかかることではありませんが、このような時に get_script_uri() は確実に複数回コールされるため、処理時間を短縮すべく、キャッシュを設けました(別の目的でコールすることもあるでしょうしね)。これで、$scriptを短縮したい、さらにindex.php という部分を削りたい、といった$scriptを改変したいというニーズとリダイレクトのニーズがバッティングすることはなくなるでしょう。 -- [[henoheno]] &new{2004-10-10 (日) 19:43:15};
#comment