前回の記事では、ヘッダーの定義について説明しましたが、このタイトルを見たときに、元の HTTP ヘッダーがクライアントに送信されることを前に紹介しましたよね?本当にそうなのか?今回はphpのheader関数が何をするのかを説明します。
まずは公式ドキュメントの定義を見てみましょう
(PHP 4, PHP 5, PHP 7)
header — ネイティブHTTPヘッダーを送信
1 void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
Parameters:
string
特別なヘッドは2つあります。 「HTTP/」で始まる最初のコード (大文字と小文字は区別されません) は、送信される HTTP ステータス コード を計算するために使用されます。 たとえば、Apache サーバー上で PHP スクリプトを使用して、存在しないファイルへのリクエストを処理する場合 (ErrorDocument ディレクティブを使用)、スクリプトが正しいステータス コードで応答することを期待するでしょう。
1 <?php 2 header("HTTP/1.0 404 Not Found"); 3 ?>
2番目の特殊なケースは、「Location:」ヘッダー情報です。ステータス コードが事前に 201 または 3xx に設定されていない限り、ブラウザにメッセージを送信するだけでなく、REDIRECT (302) ステータス コードもブラウザに返します。
1 <?php 2 header("Location: http://www.example.com/"); /* Redirect browser */ 3 4 /* Make sure that code below does not get executed when we redirect. */ 5 exit; 6 ?>
<code class="parameter"> <span style="font-family: Microsoft YaHei">replace</span>
可选参数 replace
表明是否用后面的头替换前面相同类型的头。 默认情况下会替换。如果传入 FALSE
,就可以强制使相同的头信息并存。例如:
1 <?php 2 header('WWW-Authenticate: Negotiate'); 3 header('WWW-Authenticate: NTLM', false); 4 ?>
http_response_code
强制指定HTTP响应的值。注意,这个参数只有在报文字符串(string
replace
オプションのパラメータreplace
を示します同じタイプの前のヘッダーを後のヘッダーに置き換えるかどうか。 デフォルトで置き換えられます。
FALSE
を渡すと、同じヘッダー情報を強制的に共存させることができます。例: header('Location: http://www.example.com/');
http_response_code
HTTPレスポンスの値を強制します。このパラメータはメッセージ string (string<) でのみ使用できることに注意してください。 /コード>)は空ではありません。
ヘッダー関数の一般的な使用法は次のとおりです:
1. リダイレクト
header('Content-type: application/pdf');
header('Content-type: application/pdf');
//指定内容为附件,指定下载显示的名字
header('Content-Disposition: attachment; filename="downloaded.pdf"');
//打开文件,并输出
readfile('original.pdf')
4. ユーザーがキャッシュの代わりに最新のデータとデータを取得できるようにします header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // 设置临界时间
以上がPHPにおけるヘッダー関数の役割の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。