水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > IE7でコンテント・ネゴシエーションが残念なことになる件

IE7でコンテント・ネゴシエーションが残念なことになる件

2008年8月1日(金曜日)

IE7でコンテント・ネゴシエーションが残念なことになる件

Accept-Language によるコンテント・ネゴシエーションが IE7 でうまく動作しないらしいというお話があり、いろいろ調査。

問題を簡潔にまとめると、「IE7で複数の言語を設定している場合に、その設定の順位が無視されているように見える」という感じ。たとえば、コンテンツ側で日本語と英語を用意しているとき、以下のような動作になります。

日本語、英語の順で設定したら日本語を返してほしいのに、何故か英語が返って来るという。

この原因は、「IEBlog : Accept-Language Header for Internet Explorer 7 (blogs.msdn.com)」に書かれている Accept-Language の仕様変更です。IE6 までは言語設定に「日本語 [ja]」という選択肢があったのですが、IE7 ではしれっと「日本語 [ja-JP]」になっており、他の言語についても同様ということですね。

恐ろしいことに「日本語 [ja]」という選択肢はなくなっているので、Accept-Language: ja を送りたい場合は "ja" と手入力しなければなりません。普通の人は手入力しないと思いますから ja-JP の方しか送られないわけです。

で、Accept-Language を受け取る Apache の側ではこんな感じになっています。

このおかげで、Accept-Language に ja-JP と en-US があり、コンテンツ側で ja と en が用意されているという状況では、qvalueにかかわらず ja と en のプライオリティは全く同一になってしまいます。結果として、言語の順番が無視されているように見えるわけです。

間違いではない気もしますが直感に反する動作ですね。mod_negotiation を修正してほしい感じがしますが……。

関連する話題: Web / Internet Explorer / Apache

人気のページ

最近の日記

関わった本など

デザイニングWebアクセシビリティ - アクセシブルな設計やコンテンツ制作のアプローチコーディングWebアクセシビリティ - WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践ウェブの仕事力が上がる標準ガイドブック 5 WebプログラミングWeb Site Expert #13Dreamweaver プロフェッショナル・スタイル [CS3対応] (Style for professional)

その他サイト