2009/01/20 [火]
Mozilla Firefox 3 になってから、URL 中のマルチバイトと cgi パラメータ部のマルチバイトの符号化形式が異なって送信されることが起こるようになりました。例えば「<a href="http://例1.jp/例2.html?値=例3">」を考えて見ます。
まず、ドメイン名に関しては、punnycode に変換され、送信されます。この場合、「xn--1-kb7a.jp」となります。
次に、「例2.html」ですが、Firefox 3 からこれは utf-8 で送信される異なりました。つまり「E4 BE 8B EF BC 92 2E 68 74 6D 6C」となります。
そして、「値=例3」はそのままの文字コートで出力されます。つまり utf-8 なら「例2.html」と同一の文字コードになりますが、shift_jis で送信されると、一致しなくなります。
この動作は CGI に問題をもたらすことがあります。
これを解決するには、 url に「about:config」と入力して設定画面を出し、「network.standard-url.encode-utf8」という項目に、真偽値で値「false」を設定します。これでパラメータ部の文字コードと同じマルチバイトの文字コードそのままで送信されます。
by seclan
関連
- Mozilla Firefox 3 で URL 履歴の数を制限する方法
- Mozilla Firefox 3 で URL 履歴を指定期間で必ず無効にする方法
- Mozilla Firefox 3 で巨大化するファイル urlclassifier3.sqlite を使用しない方法
- Mozilla Firefox 3 でタブやツールバー、ブックマークに favicon を表示しない方法
- Mozilla Firefox 3 でロケーションバーに文字を入力した後、結果がロケーションバーに表示される検索機能が実行されるまでの時間を指定する方法
- Mozilla Firefox 3 でロケーションバーのドロップダウンに表示される項目の検索対象元を指定する方法
- Mozilla Firefox 3 でロケーションバーのドロップダウンに表示される項目の検索対象検出方法を指定する方法