*AcceptヘッダやUAを見てContent-Typeを振り分ける [#vaa9b03e]

-ページ: BugTrack
-投稿者: [[justitia]]
-優先順位: 低
-状態: 保留
-カテゴリー: 本体新機能
-投稿日: 2004-11-26 (金) 13:59:27
-バージョン: 1.4.x

**メッセージ [#ndb39497]
Another HTML-LintにWikiから出力されたHTMLソースを放り込むと[[怒られてしまいます。:http://openlab.ring.gr.jp/k16/htmllint/explain.html#conflict-mime]]
そこでpukiwiki.skin.phpを次のように書き換えてみます
 header('Content-Type: application/xhtml+xml ; charset=' . CONTENT_CHARSET);
これならば怒られなくなるけれども、IEなど一部のブラウザでは表示されなくなります。そこで次のように書き換えます
 $accept = $_SERVER['HTTP_ACCEPT'];
 $ua = $_SERVER['HTTP_USER_AGENT'];
 if (eregi("Opera", $UA)) {
   header ('Content-Type: application/xhtml+xml; charset=' . CONTENT_CHARSET);
 } elseif (ereg("application/xhtml\+xml",$accept)) {
   header ('Content-Type: application/xhtml+xml; charset=' . CONTENT_CHARSET);
 } else {
   header ('Content-Type: text/html; charset=' . CONTENT_CHARSET);
 }
これなら、問題ない・・・はずです。
もしよければ使って下さい
----
-Operaだけ明示的に分けているのは何故? --  &new{2004-11-26 (金) 15:53:08};
--おそらく、Opera は HTTP_ACCEPT に application/xhtml+xml を出さないからでは? -- [[みこ]] &new{2004-11-26 (金) 16:30:29};
--ただ、Operaも含めてUSER_AGENTによる例外は作るべきではないとおもいますけどね (^^; 受け入れられないといってるんだから・・・ -- [[みこ]] &new{2004-11-26 (金) 16:34:34};
--余談ですが、another-lint も HTTP_ACCEPT に application/xhtml+xml が含まれていなかったような覚えが・・・ (^^;(記憶違いならごめんなさい (^^;) -- [[みこ]] &new{2004-11-26 (金) 17:17:16};
-お知らせありがとうございます :) Another HTML-Lint のその解説の最後に「しかし、そもそも application/xhtml+xml では、<meta http-equiv> を記述すべきではありません。」とも書いてありますね。そうなのであればスキンから <meta http-equiv> を取り除くことや、その影響についても考えて作業しないといけなそうです。怒られなくなるようにしよう、というよりも、正しいのはどうなのだろうか、という視点でもう少し掘り下げる必要がありそうですね。ご意見をお待ちしております -- [[henoheno]] &new{2004-11-27 (土) 22:41:37};
-けど実質今は<meta http-equiv>があるからこそIEでも何とか表示できているのであって、削除したらそれこそIE門前払いになりかねないと思います --  &new{2004-11-27 (土) 23:01:28};
-ああ、「正しい」というのは仕様に対する厳格さではなくて、(スマートで)現実的な解かどうかということでお願いします :) -- [[henoheno]] &new{2004-11-28 (日) 00:39:42};
-できるならば.htaccessで全部メタ情報を提供するのが一番と思います。<meta http-equiv>はあくまでもこの手段が使えない場合の代替措置だと、私は思います --  &new{2004-11-28 (日) 09:42:59};
-そうそう、Windows は application/xhtml+xml をわたすプロトコルや拡張子が未だにないんですよね (^^; -- [[みこ]] &new{2004-11-28 (日) 10:03:51};
-わたしの中での現実的な解は ブラウザがW3C標準モードになってさえくれれば、無理に application/xhtml+xml でなく text/html でもいいのでは?という感じです。(そうするとほぼ現状でいいのでは?ってことなんですけどね。) -- [[みこ]] &new{2004-11-28 (日) 10:08:17};
-ただ、HTTP(プロトコル) からみての本来は RFC2616(HTTP/1.1) ではリソースを最適にあらわせるのならば、再度サーバにリクエストしておこなう・・・ということになっています。そのための再リクエストやタイプの認識を補助するのがのが Accept になるので、Accept で application/xhtml+xml (とapplication/xml)があるならば、それを返してあげてもいいのではないかな((いいのではないかなという意味は、なくてもいいのではの裏返し (^^; ))と・・・ -- [[みこ]] &new{2004-11-28 (日) 10:38:25};
-ふむふむ。ブラウザが該当の Accept を返してくる (受け入れオッケーですよ) ときにそうする (Content-Typeをセットし、metaを取り外す) のが良さそうですね。 -- [[henoheno]] &new{2004-11-28 (日) 11:11:17};
-旧PukiWiki.org の対応 -- [[merlin]] &new{2004-11-28 (日) 18:10:26};
 header('Cache-control: no-cache');
 header('Pragma: no-cache');
 if (ereg("(Gecko|Opera\/7|Another_HTML-lint)",HTTP_USER_AGENT) == FALSE) 
 {
   header('Content-Type: text/html; charset='.mb_http_output());
 } else {
   header('Content-Type: application/xhtml+xml; charset='.mb_http_output());
 }
 if (ereg("MSIE (3|4|5|6)", HTTP_USER_AGENT) == FALSE) {
   echo '<?xml version="1.0" encoding="'.mb_http_output().'"?>'."\n";
 }
 ......
 <head>
 <?php if (ereg("(Gecko|Opera\/7|Another_HTML-lint)",HTTP_USER_AGENT) == FALSE) 
 { ?>
   <meta http-equiv="content-type" content="application/xhtml+xml; charset=<?php echo mb_http_output()?>" /> 
 <?php } ?>
 <?php if (ereg("(Another_HTML-lint)",HTTP_USER_AGENT) == FALSE) 
 { ?>
   <meta http-equiv="content-style-type" content="text/css" />
 <?php } ?>
 ......
 
-こんな風にするのかな? -- [[merlin]] &new{2004-11-28 (日) 18:34:29};~
http://fumika.jp/nikki/2004/04/mod_rewrite~
http://altba.com/bakera/hatomaru.aspx/ebi/topic/1234~
http://www.nurs.or.jp/~b3/test/mediatype/~
-参考資料としては [[HTMLおよびXHTMLに関するFAQ>http://www.w3.org/MarkUp/2004/xhtml-faq]] [[(和訳)>http://linkage.xrea.jp/documents/W3C/XHTML_FAQ/]] かな・・・このなかに、ちょっと興味深い記事も・・・ -- [[みこ]] &new{2004-11-30 (火) 14:46:33};
-%%IE6.0SP2%%WindowsのIE限定だけど、トリックを使って[[XHTML1.1表示できちゃった>http://cafelounge.net/dev/plus/index.php?TEST%2FXHTML11withIE]]・・・ (^^; -- [[みこ]] &new{2004-11-30 (火) 20:46:51};
-merlinさん、みこさん資料をありがとうございます。この対処は実務的にどうこうというよりも、丁寧であるかどうかという問題のようですね。 -- [[henoheno]] &new{2004-11-30 (火) 21:46:35};
-そそ。なおかつまだ問題も多いし、PukiWikiはスキンだけで対応できるので「ちょっと便利に」ぐらいの程度かと。。。 -- [[みこ]] &new{2004-12-01 (水) 10:58:29};
-関連: [[BugTrack2/16]] --  &new{2005-02-24 (木) 23:14:41};

#comment
//#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.082 sec.

OSDN