簡體   English   中英

何時在PHP中使用標題('Content-Type:application / json')

[英]When to use header('Content-Type: application/json') in PHP

我一直試圖弄清楚php腳本中的header('Content-Type: application/json')的用法是什么,我在stackoverflow上找到了關於這個主題的不同問題和答案,但我仍然沒有完全得到它...

所以這里有一個問題:我在一些php項目中看到過這行代碼,我正在努力理解

  • 如果在另一個網頁調用這個實際腳本(例如ajax)時使用它,那么調用頁面可以從php頁面獲取一個json

要么

  • 如果這個腳本意味着php頁面將處理從另一個網頁發送的json。 或者別的什么???

另一件事可以幫助我,如果回答,最近我一直在使用cURL從資源(外部URL)檢索json,我不得不在請求中放置此標頭(Content-type:application / json)。 我是否將此標題發送到exertnal資源或是這個MY標題,以便我可以處理返回的json?

謝謝

對於那些感興趣的人,我終於想通了當另一個頁面調用php腳本時使用header('Content-Type: application/json') ,以便其他頁面可以自動將結果解析為json

例如我在我的test.php中:

header('Content-type: application/json; charset=utf-8');
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}

在我的main.js

function test() {
    $.ajax({
        url: 'test.php',
        type: 'GET',
        //dataType: 'html',
        success: function (response) {
            alert(response);
        }
    });
};

當我沒有將dataType設置為“json”或者我的test.php中沒有標題時,警報給出{"a":1,"b":2,"c":3,"d":4,"e":5}這是一個字符串(嘗試使用typeof(響應),當我有這個頭,或者dataType:“json”時,我從警報中得到[object Object] 。所以這個頭函數是在那里向調用頁面指示它返回的數據類型,以便您可以知道如何處理它。在我的腳本中,如果我沒有header('Content-Type: application/json') ,我我必須解析javascript中的響應,如下所示: JSON.parse(response)為了使它成為一個json,但是有了這個頭,我已經有了一個json對象,我可以用jSON.stringify(response)它解析為html jSON.stringify(response)

您應始終為任何HTTP響應設置Content-Type ,以描述您在該響應中所服務的內容。

無論是JSON還是其他東西,以及它是用於AJAX請求還是其他任何類型的請求。


您還應該為描述POST有效負載的任何請求設置Content-Type

在PHP中,如果您沒有在腳本中指定Content-Type標頭,則默認為您配置的default-mimetypephp.ini文件中,通常為text/html

調用header('Content-Type: application/json')將覆蓋該默認設置,以便腳本在請求時響應該Content-Type

此外,當使用Content-type:application/json標頭調用curl時,您要指定請求正文的內容類型,而不是預期的響應。

W3描述內容類型

Content-Type字段的目的是充分描述主體中包含的數據,使得接收用戶代理可以選擇適當的代理或機制來向用戶呈現數據,或者以適當的方式處理數據。

簡而言之,只是告知接收者他收到了什么樣的數據並相應地消費它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM