toinamiの日記β このページをアンテナに追加 RSSフィード

2006-12-04 (Mon)

[][][] ";"を含むURL引用(idea:13222) は、hatenabar側の問題じゃないかも 12:41  ";"を含むURLの引用(idea:13222) は、hatenabar側の問題じゃないかも - toinamiの日記β を含むブックマーク はてなブックマーク -  ";"を含むURLの引用(idea:13222) は、hatenabar側の問題じゃないかも - toinamiの日記β  ";"を含むURLの引用(idea:13222) は、hatenabar側の問題じゃないかも - toinamiの日記β のブックマークコメント

はてなアイデア - [不具合]FireFoxのHatenabar 0.4.9で特定のサイトに対し「D!」と「G!」で動作が異なる。詳細はコメント ですが、「特定のサイト」じゃなくて「;を含むURL」で引用できないのかな。;を含むキーワードページ(例えば「ave;newhttp://d.hatena.ne.jp/keyword/ave;new )から同様に[D!][G!]は出来ません。

[追記12/7]ダイアリグループ日記からダイアリキーワードへは「;」が「%3b」に変換されてリンクが張られているな。はてな検索から「;」を検索したキーワードページは%3bになっていないので変。

それに、hatenabarだけじゃなく、はてなツールバーでも同様です。

 §

hatenabarソースを見る限りでは、URLやtitle、引用部もすべてescapeURIComponentを通されており、基本的には問題はない。

テスト(ダイアリ側)

単純に、引用URL部分だけに絞って見てみる。

hatenabarでは、http://d.hatena.ne.jp/refer?cite=の後ろに引用URLをescapeしたものを付け、ダイアリーサーバー側で編集画面リダイレクトしてくる。

キーワードave;new」を開いた際に、hatenabarから送信する物は「;」を「%3b」にescapeし、「http://d.hatena.ne.jp/refer?cite=http%3a//d.hatena.ne.jp/keyword/ave%3bnew」をリクエストする。(/などもエスケープされるし、titleも付くけど略)

これだと「指定したURLには対応していません。」になります。

適当に改変しリクエストしてみると

と言う状況です。

サーバー側が「%3b」のエスケープを解除しすぎてなんか変になっている感じ? とはいうものの、……(以下長くなるので「URLに使用するとhatenabarなどで引用できなくなる可能性のある文字(未検証)」へ)

テスト(グループ側)

hatenabarでは、http://グループ名.g.hatena.ne.jp/refer?cite=の後ろに引用URLをescapeしたものを付け、グループサーバー側で編集画面リダイレクトしてくる。

テスト結果は省略。同様に「http://beta.g.hatena.ne.jp/refer?cite=http%3a//d.hatena.ne.jp/keyword/ave%253bnew」なら一応引用できるので、エラーメッセージを出さないだけで、引用できるか出来ないかはダイアリーと同じ

URLに使用するとhatenabarなどで引用できなくなる可能性のある文字(未検証)

RFC3986 http://www.studyinghttp.net/cgi-bin/rfc.cgi?3986

URI は、"予約されている" 集合内の文字によって区切られる構成要素及び副構成要素を含んでいる。

これらの文字は、URI の逆参照アルゴリズムにおける一般的な構文、各スキーム特有の構文、あるいは実装特有の構文によって区切り子として定義される (あるいはされない) ので、"予約されている" と呼ばれる。

URI 構成要素についてのデータデリミタとして予約されている文字の目的と競合する場合、競合するデータURI が形成される前にパーセントエンコーディングされなければならない

      reserved    = gen-delims / sub-delims

      gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"

      sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
                  / "*" / "+" / "," / ";" / "="

こいつらは適切にエスケープされていることが前提?なので、エスケープされたURL引用元なら、hatenabarでもはてなツールバーでも問題ない。

……ってことはだ、「;」とか「$」とかをそのまま扱っているブラウザ自身が……なので、hatenabarサーバー側も(本来は)問題ないはずというか。

(直してもらうなら、サーバ側だと思いますが)

[追記](さらに言うなら、;をそのまま気にしないで利用する該当のwikiサービスが悪い。はてなキーワードについては↓の通り、はてな検索のみおかしいっぽい気がする)

追記 12/7

ave;new」と書いた先のリンクは正しく「;」が「%3b」に変換されてリンクが張られていて、はてな検索から「;」を検索したキーワードページは%3bになっていないので変。と言う点をアイデアに挙げておきます。

原理主義っぽいのはあまり好みじゃないけど。

はてなアイデア - はてな検索でヒットしたキーワードで、RFC3986により「%エンコーディングが必要」とされている記号を使ったキーワードへのURLでは、その記号が%エンコーディングされていない。