來自 Web 伺服器的非 HTML 輸出
在某些情況下,使用 Web 伺服器時,可能需要覆蓋 Web 伺服器的預設內容型別。例如,可能存在需要以 plain text
,JSON
或 XML
傳送資料的情況。
該 header()
功能可以傳送原始 HTTP 標頭。你可以新增 Content-Type
標頭以通知瀏覽器我們傳送的內容。
考慮以下程式碼,我們將 Content-Type
設定為 text/plain
:
header("Content-Type: text/plain");
echo "Hello World";
這將生成包含以下內容的純文字文件:
Hello World
要生成 JSON 內容,請改用 application/json
內容型別:
header("Content-Type: application/json");
// Create a PHP data array.
$data = ["response" => "Hello World"];
// json_encode will convert it to a valid JSON string.
echo json_encode($data);
這將生成 application/json
型別的文件,其中包含以下內容:
{回覆:
Hello World
}
請注意,必須在 PHP 生成任何輸出之前呼叫 header()
函式,否則 Web 伺服器已經為響應傳送了標頭。因此,請考慮以下程式碼:
// Error: We cannot send any output before the headers
echo "Hello";
// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";
這會產生警告:
警告: 不能更改頭資訊 -頭已經發出(輸出開始/dir/example.php:2)在 /dir/example.php 上線 3
使用 header()
時,其輸出需要是從伺服器傳送的第一個位元組。因此,在 PHP 開始標記 <?php
之前,在檔案開頭沒有空行或空格很重要。出於同樣的原因,從檔案最末端的 PHP 程式碼塊中省略 PHP 結束標記 ?>
被認為是最佳實踐(參見 PSR-2 )。
檢視輸出緩衝部分 ,瞭解如何將內容捕獲到變數中以便稍後輸出,例如,在輸出標題後。