繁体   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