在提供JSON数据时使用PHP头文件的教程

147 阅读3分钟

在提供JSON数据时使用PHP头文件

在这篇文章中,探讨使用头信息的良好做法,以确保你的应用程序的输出被正确处理。

网络浏览器和其他类似的应用程序依靠头文件来理解网络服务器提供给它们的内容。虽然现代浏览器会尝试 "猜测 "内容的格式,并智能地将其格式化,但使用标头来确保你的应用程序的输出被正确处理仍然是很好的做法。当发送JSON Payload时,使用以下PHP代码设置头。

header('Content-type: application/json');

然而,在设置头信息时,必须要注意一些事情。

首先,为了避免出现 "头信息已经发送 "的错误,头信息必须是Web服务器首先发送的内容。最好把任何与设置页眉有关的代码放在PHP文件的顶部,以避免在页眉设置之前脚本产生其他输出而导致的问题。

此外,还要考虑你希望浏览器/客户端如何处理这些数据。在这个例子中,我们不只是通知浏览器数据是JSON格式的,我们还设置了一些与缓存和过期有关的指令。

header('Cache-Control: no-cache, must-revalidate');

这一行告诉浏览器不要缓存数据,而且每次要加载数据时都要发送一个重新验证的请求,以确保它拥有的信息仍然是新鲜的。这些指示对那些有时间敏感性或定期变化的数据很有用。

过期头是用来帮助浏览器知道它何时需要重新请求数据。

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

在这个例子中,过期日期被设置为很久以前的一个日期,告诉服务器它应该总是发送一个重新验证的请求。这个日期和时间可以改变为开发者希望的任何东西。例如,一个详细介绍班级时间表的JSON文件可以被设置为在 "星期五晚上 "失效。如果用户在星期六请求时间表,他们会看到下一周的信息。

一旦头文件被发送,PHP脚本就可以发送JSON有效载荷,相信应用程序会正确处理它。

导致 "头信息已发送 "错误的常见原因

PHP中设置头信息时,最常见的问题是头信息在脚本中发送得太晚。如果脚本在发送头信息之前发送了任何输出--甚至是一个空行或空白--这将导致一个错误。

在使用HTML和PHP的单一文件时,经常会遇到这种错误。即使在PHP代码的开头设置了页眉,如果该文件已经发送了一些HTML标记,这意味着设置页眉已经太晚了。

在某些情况下,错误的来源并不那么明显。使用includerequire 读取其他文件的 PHP 代码,如果其他 PHP 脚本创建了任何输出,那么在设置头信息时可能会导致一个错误。

始终在任何其他代码或标记之前运行任何与头文件指示有关的代码以防止这种错误。