Accept によるネゴシエーション実装
Accept ヘッダによるコンテントネゴシエーションを実装した。昨日 UA による振り分けでごちゃったばっかりだけど、そいつらはコメントアウト。
とりあえず設定ファイルを用意しといて、Accept ヘッダをパースし、品質を割り当て、鯖側の設定値 (qs) と掛け合わせて一番大きいのを選ぶ。application/xhtml+xml と text/html が同じ優先値になった場合は text/html を選ぶようにしてある。これは IE が */* 送ってくる対策。Opera や Firefox は text/html の順位を少しさげてる (0.9) ので、application/xhtml+xml が選択される。
選択といっても flavor の切り替えなので問題があったりする。同じメディアタイプの flavor の扱いがアレ。コメント用 flavor (.comment) も application/xhtml+xml にしたいんだけど、これだと IE でダウンロードされてしまう。とりあえず XHTML 1.0 にして常に text/html で送信するように変えた。この辺は仕方ないというかなんというか……回避するには UA で判定してやる以外ない。flavor がメディアタイプの選択以外の役割を持っているのが悪いっちゃ悪いんだけど、他にいい方法が思いつかない。
関連エントリー
- サイト構成 全て XML で書いて変換してやる。日記は今のまま。common.xsl を作り、ヘッダ、ナヴィゲーション、フッタをインクルード。-abou...
- text/html => XHTML 1.0 Strict 今まで IE には XHTML 1.1 を Content-type だけ変えて送信していたけど、XHTML 1.0 で送信するようにした。...
- 台風・雨・ネゴシエーション どっつぃさんに IE でダウンロードになるぜ的指摘を受けたので思い返してみると application/xhtml+xml を受け入れるよう...
- このサイトの構築構造 全部 XML から XSLT プロセッサを通して XHTML やらなにやらを生成してる。日記部分は動的に、/about とかは静的に、それぞ...
- Google の検索結果がおかしい スクリプト変更以降に再インデックスされた部分がのきなみ「ファイルタイプ:不明」で文字化けする。原因がよくわからない。 とりあえず UA に ...