BugTrack/751
の編集
Top
/
BugTrack
/
751
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
*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
タイムスタンプを変更しない
*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
テキスト整形のルールを表示する