HTTP Response是指向客戶端發(fā)送的HTTP報(bào)文。PHP中,使用HTTP Response是在瀏覽器呈現(xiàn)頁(yè)面時(shí)很常見(jiàn)的做法。比如,當(dāng)用戶訪問(wèn)一個(gè)PHP頁(yè)面時(shí),服務(wù)器響應(yīng)請(qǐng)求,查詢數(shù)據(jù)庫(kù)然后輸出HTML代碼到瀏覽器的。在輸出HTML代碼過(guò)程中,需要用到HTTP Response。
HTTP Response主要有兩部分組成: Response Header和Response Body。Response Header包含了HTTP Status Code、Content Type以及其他一些響應(yīng)頭部。Response Body是輸出到瀏覽器的內(nèi)容,通常是HTML代碼。PHP中,可使用許多內(nèi)置函數(shù)來(lái)生成HTTP Response。我們將會(huì)看到一些例子,以說(shuō)明這些函數(shù)如何工作。
常見(jiàn)的HTTP響應(yīng)碼分類如下:
1xx:信息
2xx:成功
3xx:重定向
4xx:客戶端錯(cuò)誤
5xx:服務(wù)器錯(cuò)誤
以下是HTTP Response中Response Header的常用內(nèi)容:
Content-Type:表示輸出的內(nèi)容類型,其值常見(jiàn)的有text/plain、text/html、application/json等。
Content-Length:表示輸出內(nèi)容的長(zhǎng)度,單位一般是字節(jié)。
下面的例子展示如何使用PHP發(fā)送HTTP Response響應(yīng):
<?php // 設(shè)置輸出類型為HTML header('Content-Type: text/html'); // 發(fā)送HTTP Response響應(yīng) echo "<html><head><title>這是一個(gè)標(biāo)題</title></head><body>這是主體內(nèi)容</body></html>"; ?>這個(gè)例子主要是給出了如何在PHP中發(fā)送HTTP Response響應(yīng)的例子。首先,通過(guò)header()函數(shù)設(shè)置了Content-Type為text/html。之后,輸出了一個(gè)HTML頁(yè)面。該頁(yè)面有一個(gè)標(biāo)題和一個(gè)主體。運(yùn)行這個(gè)程序時(shí),將會(huì)在瀏覽器中顯示給定的HTML代碼。 我們還可以從PHP輸出HTTP狀態(tài),如下所示:
<?php // 設(shè)置輸出類型為HTML header('Content-Type: text/html'); // 發(fā)送HTTP狀態(tài)響應(yīng)碼 http_response_code(404); // 發(fā)送HTTP Response響應(yīng) echo "<html><head><title>這是一個(gè)標(biāo)題</title></head><body>這是一個(gè)404頁(yè)面</body></html>"; ?>這個(gè)例子展示了如何發(fā)送HTTP響應(yīng)狀態(tài)碼404。首先,設(shè)置Content-Type為text/html。之后,使用http_response_code()函數(shù)設(shè)置HTTP狀態(tài)碼為404。最后,輸出了一個(gè)HTML頁(yè)面。在這次運(yùn)行中,瀏覽器將顯示給定的HTML頁(yè)面,同時(shí)HTTP狀態(tài)碼為404。 另外一種情況是在發(fā)送一個(gè)二進(jìn)制文件(如圖片、PDF等)時(shí),需要更多的頁(yè)面設(shè)置。在這種情況下,我們還需要設(shè)置Content-Length來(lái)發(fā)送正確的響應(yīng)頭。例如,我們可以通過(guò)下面的代碼發(fā)送一張圖片:
<?php // 設(shè)置響應(yīng)頭為image/jpeg header('Content-Type: image/jpeg'); // 從文件中讀取圖片 $img = file_get_contents('./image.jpg'); // 發(fā)送HTTP Response響應(yīng),發(fā)送內(nèi)容和Content-Length header('Content-Length: '.strlen($img)); echo $img; ?>這個(gè)例子中,我們發(fā)送了一張JPEG圖片。首先設(shè)置了響應(yīng)頭類型為'image/jpeg'。之后,通過(guò)file_get_contents()函數(shù)讀取圖片文件?;谧x取的內(nèi)容,通過(guò)header()函數(shù)設(shè)置Content-Length。最后,發(fā)送圖片內(nèi)容到瀏覽器。 總結(jié)一下,在PHP中使用HTTP Response主要包含兩個(gè)部分:響應(yīng)頭和響應(yīng)主體。PHP的header()函數(shù)用于在響應(yīng)頭中設(shè)置HTTP響應(yīng)的Content-Type和Content-Length等內(nèi)容。另外,還可以使用http_response_code()函數(shù)設(shè)置HTTP響應(yīng)狀態(tài)碼。最后,我們可以通過(guò)echo等函數(shù)發(fā)送響應(yīng)主體到瀏覽器中輸出。