來自 Web 伺服器的非 HTML 輸出

在某些情況下,使用 Web 伺服器時,可能需要覆蓋 Web 伺服器的預設內容型別。例如,可能存在需要以 plain textJSONXML 傳送資料的情況。

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 )。

檢視輸出緩衝部分 ,瞭解如何將內容捕獲到變數中以便稍後輸出,例如,在輸出標題後。