[携帯電話] HTTPのLocation ヘッダによるリダイレクトに失敗する

  • 元タイトル: editによるリダイレクト
  • ページ: BugTrack
  • 投稿者: Data?
  • 優先順位: 重要
  • 状態: 完了
  • カテゴリー: プラグイン
  • 投稿日: 2004-03-04 (木) 19:30:13
  • バージョン: 1.4.2

メッセージ

編集の更新でeditプラグインが呼ばれますが、こいつがHTTP 304を返して表示のためのリダイレクトします。
このときのLocationヘッダのURLが、完全修飾のURLでないため、携帯(N503i)だとリダイレクトしてくれません。

私は以下の修正をしましたが、適切かどうか不明です。

-header("Location: $script?".rawurlencode($post['page']));
+$url = get_script_uri();
+header("Location: ".$url."?".rawurlencode($post['page']);

ちょっと確認:

14.30 Location

  The Location response-header field is used to redirect the recipient
  to a location other than the Request-URI for completion of the
  request or identification of a new resource. For 201 (Created)
  responses, the Location is that of the new resource which was created
  by the request. For 3xx responses, the location SHOULD indicate the
  server's preferred URI for automatic redirection to the resource. The
  field value consists of a single absolute URI.

      Location       = "Location" ":" absoluteURI

  • RFC2616上のLocationヘッダの定義は、absoluteURI となっているので、get_script_uri()もabsoluteURIを戻すので、RFC上では問題ないと思います。あとは、ちょっと追いきれていません。 -- upk 2004-03-04 (木) 23:24:54
  • 現在は$scriptが自動的にget_script_uri()を返すので、このバグは発生しないはずですので、完了にしておきます。 -- Ratbeta? 2004-10-10 (日) 16:41:48
  • 掘り出しありがとうございます>Ratbeta? しかし残念ながら、確かに $script の生成には get_script_url() が使われるものの、keitai.ini.php には $script を短縮するためのロジックが組み込まれているため、keitaiプロファイルにおいてはこのバグは再現するでしょう。(ここにいたるまでの間に$scriptはFQDNではなくなってしまいます) -- henoheno 2004-10-10 (日) 18:04:18
  • ここでの問題は、自分自身を指したいというニーズが複数あって、それをコードが認識していないということですね。 -- henoheno 2004-10-10 (日) 18:06:06
  • 原因はedit.inc.phpではなかったわけですね…。となると、他にLocationで$scriptを用いているプラグイン(amazonとpcomment?)でもこのバグが再現する訳ですね。 -- Ratbeta? 2004-10-10 (日) 18:09:06
  • バグが発生するプラグインは上記以外でもbugtrack,newpage,rename,trackerがありますね。 -- Ratbeta? 2004-10-10 (日) 18:13:31
  • その通りです :) -- henoheno 2004-10-10 (日) 19:30:10
  • 1) Locationヘッダを利用している箇所は get_script_uri() を呼ぶことで、常に絶対パスを用いる様に修正しました。 2) そんなにコストがかかることではありませんが、このような時に get_script_uri() は確実に複数回コールされるため、処理時間を短縮すべく、キャッシュを設けました(別の目的でコールすることもあるでしょうしね)。これで、$scriptを短縮したい、さらにindex.php という部分を削りたい、といった$scriptを改変したいというニーズとリダイレクトのニーズがバッティングすることはなくなるでしょう。 -- henoheno 2004-10-10 (日) 19:43:15
  • 追加です。マニュアルで $script を設定している環境で get_script_url() をコールしたときにも矛盾が出ない様に修正しました。 -- henoheno 2004-10-11 (月) 12:14:39

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-10-11 (月) 12:16:33
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.184 sec.

OSDN