HTTPヘッダいろいろ@はやし
先週の土曜にJR仁木町で初めて降り、友人と町を歩きましたが、
歩いている人は私たち以外誰もいない、とっても静かな町でした。
仁木ファームの「チェリーパイ」がとてもおいしかったです!
本日はHTTPヘッダあれこれです。
●HTTPヘッダ
データの先頭に付加される、データ自体に関する情報。
ウェブのリソースに関するメタ情報を提供します。
ブラウザからウェブサーバへの外へ出ていくリクエストヘッダと
ウェブサーバからブラウザへ返ってくる応答のリプライヘッダがあります。
header() 関数は、通常の HTML タグまたは PHP からの出力にかかわらず、
すべての実際の 出力の前にコールする必要があることです。
(PHPマニュアルより)
header出力の前にデバック用にprintと書いてあるのを
忘れてしまうことが度々。。。
もちろんエラーです。
●SSL+PHP+ファイルをダウンロードする場合
・ダウンロード対象となるファイルに Content-Disposition:attachment
ヘッダーを付加している
・Cache-Control:no-cache ヘッダーなどを使用して、ファイルのキャッシュを
行わない設定をしている
とIEではファイルのダウンロードができません。
例えばcsvファイルダウンロードの際には
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=output.csv");
の前に
session_cache_limiter('public') ;
または
header("Cache-Control: public");
header("Pragma: public");
と付け加えると、ダウンロードが可能になります。
◆ Pragma (要求/応答)
・Pragma: no-cache:
キャッシュを禁止する旨をプロキシサーバやクライアントに通知します。
◆ Cache-Control (要求/応答)
キャッシュに関する指示を表します。
・Cache-Control: no-cache:
プロキシサーバやクライアントがこのリソースをキャッシュしては
ならないことを示しています。
※HTTP/1.0 では Pragma: no-cache が使用されます。
◆session_cache_limiter()
クライアントに送信されるキャッシュ制御用の HTTPヘッダを制御します。
これらのヘッダは、ページの内容をクライアントやプロキシが
キャッシュする規則を定義します。
session_cache_limiter()もheader()と同じように
通常の HTML タグまたは PHP からの出力にかかわらず、
すべての実際の 出力の前にコールする必要があります。
・session_cache_limiter('nocache'):
クライアント/プロキシのキャッ シュは無効になります。
・session_cache_limiter('public'):
キャッシュを許可します。
・session_cache_limiter('private'):
プロキシがキャッシュすることは許可しませんが
クライアントがキャッシュすることは許可されます。
●『ieHTTPHeaders 』
HTTP リクエストとレスポンスを表示してくれる IE 用プラグイン。
・ieHTTPHeaders のダウンロードとインストール
■blunck.info
http://www.blunck.info/iehttpheaders.html
■Download ieHTTPHeaders - Just download and execute the installer
http://www.blunck.se/iehttpheaders/ieHTTPHeadersSetup.exe
●余談
「HTTP」でグーグル検索したら、”Yahoo!Japan”や
”厚生労働省”、”首相官邸ホームページ”が1ページ目でヒットします。
●参考
■HTTP入門(ヘッダ)
http://www.tohoho-web.com/ex/http.htm#headers
■studyingHTTP
http://www.studyinghttp.net/header