dポイントプレゼントキャンペーン実施中!

PHPではheader関数を用いてHTTPヘッダを送信することが出来ますね。
スクリプトからHTMLを丸ごと吐き出す場合、
header関数によるヘッダ送信に併せて
HTMLのメタタグでhttp-equivも記述すべきなのでしょうか。
また万一それぞれの記述が一致しない場合にはどちらが優先されるのでしょう。

初心者ながら、健全なスクリプトを目指しております。
よろしくお願いします。

A 回答 (3件)

>header関数によるヘッダ送信に併せて


>HTMLのメタタグでhttp-equivも記述すべきなのでしょうか。
>また万一それぞれの記述が一致しない場合にはどちらが優先されるのでしょう。

スジ論でいえば、http-equivは、HTTPヘッダの「相当物」であって、HTTPヘッダに書いておけば、METAタグに書く必然性はないと思います。

ただし、Content-TypeはHTTPヘッダとMETAタグの両方に書くことが多いです。HTML4.01の仕様では、Charset指定は、METAタグよりもHTTPヘッダの記述を優先すべきと書いていますが、古いブラウザにはHTTPヘッダを無視するものがあります。そのようなブラウザでも文字化けせずに表示されるよう、METAタグにも記述をします。

この例のように、何らかの規格上「METAタグにも記述すべき」とはなっていないけれども、ブラウザの実装は様々なので、METAタグにも書いておいた方が安心という程度のことだと思います。私も、文字化けや、キャッシュ防止などの、重要な情報については、HTTPヘッダとMETAタグの両方に書いていました。

蛇足ですが、Content-Style-Type、Content-Script-Typeなどは、METAタグの方にのみ書くことが多いと思います。この二つは、デザイナやHTMLを作る人(HTTPヘッダを直接いじる権限が無い人)が、設定できた方が便利だという事情もあるのかなと思います。
    • good
    • 0
この回答へのお礼

fdsjaklfjas様の回答ではHTTPヘッダを無視するブラウザがあり、
PED02744様の回答では、メタタグを無視するブラウザがある
・・・ということは、結局両方書いておくのが一番なのですね。
Content-Style-Typeなどは、確かにHTTPヘッダに書いてあるのを
見たことがありません。
詳しい回答ありがとうございました。

お礼日時:2006/12/13 00:09

基本的にNo.1さんのおっしゃっているとおりかと思います。


ブラウザが認識するまでの動作=ヘッダ
ブラウザが認識した後の動作=メタタグ
なので、基本的には両方に書くべきです。

ただし、IEはお馬鹿なので、、、、(^_^;)
絶対に32KB分のデータは読み取ってしまうようです(笑)
つまり、小さなHTMLファイルだと、META http-equivだけでは
いくら no-cacheにしてても、キャッシュしてしまうということです(^_^;)
ということで、MSの推奨は、
「ヘッダセクションをもう一回</BODY>の後に書いてくれ」という
すごい回答です(笑)
http://support.microsoft.com/kb/222064/JA/
また、http-equiv はie5等では無視されますので、IEだけがターゲットなら、ヘッダに書くだけで良いと思います。
    • good
    • 0
この回答へのお礼

やはり両方書いたほうが良いということですね。
ありがとうございました。

MSは、、まったくすごい回答ですね。

お礼日時:2006/12/13 00:01

メタタグでも記述すべき



優先は・・・(どちらも正しいなら)・・・受ける時の挙動をheader送信で(物によってはDLになったりする)、受けた後の挙動(主に描画)がメタタグかと。
自信ないからここは誰かもっと詳しい人にパス・・・

この回答への補足

一部大手サイトのHTMLにhttp-equivが記述されていない理由をご存知でしたら、
教えていただけると嬉しいです。

補足日時:2006/12/12 23:54
    • good
    • 0
この回答へのお礼

ありがとうございます。
両方書いておいたほうが確実ということですね。
大手サイトのHTMLを見ていると、http-equivの記述がない場合があります。
(DTD宣言もなかったりする)
こういうのは先にスクリプトから出力してるためかな、と思ったのです。

お礼日時:2006/12/12 23:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!