欢迎访问宙启技术站
智能推送

PHP中的header函数-发送HTTP头信息到客户端。

发布时间:2023-06-16 16:44:29

PHP中的header函数是用来发送HTTP头信息到客户端的。HTTP头信息是客户端和服务器之间传输数据的必须内容,是在请求和响应之间交换的一组元数据。HTTP头包含了很多的信息,例如:请求方法、响应状态码、内容类型、缓存控制、cookie 等。header 函数可以在处理 HTTP 响应时方便地加入头部信息,从而控制响应数据的输出。

header 函数使用的语法为:

header(string $header, bool $replace = true, int $http_response_code = null)

其中,参数$header是必须的,表示要发送的HTTP头信息,它是一个字符串类型的参数,例如:Content-Type: text/html; charset=utf-8。参数$replace是可选的,默认为true,表示是否替换头信息,如果为true,则会覆盖已经设置的相同类型的头信息,否则,新设置的头信息会被添加到已有的头信息之后。参数$http_response_code也是可选的,表示响应状态码,例如:200表示成功,404表示未找到页面等。

header函数在 PHP 中有多种应用场景:

1. 设置文件下载

当要让用户下载某个文件时,需要设置 Content-disposition 头。这个头告诉浏览器需要下载文件,并且指定文件的名字。

例如:

$file = "/path/to/file.jpg";

header("Content-Type: image/jpeg");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\";");
header("Content-Length: " . filesize($file));

readfile($file);

上面的代码将从服务器上读取图片文件并作为字节流输出,浏览器在接收到这些数据流后,弹出一个下载窗口,让用户选择下载文件或者直接打开。

2. 设置跨域

解决跨域问题可以使用 CORS,也可以使用 PHP 发送 Header。

由于运行在不同域的站点的浏览器无法读取对方的 Cookie,也无法发送对方的 AJAX 请求。因此,PHP 来实现服务器端允许跨域访问的功能。

例如:

header("Access-Control-Allow-Origin: *");

这一行表示允许来自所有域名的 AJAX 请求,同时也可以只允许单个域名的 AJAX 请求,例如:

header("Access-Control-Allow-Origin: http://www.domain.com");

3. 设置内容类型

在使用 PHP 输出 JSON 或 XML 数据时,需要设置 Content-Type 头。这个头告诉浏览器需要以 JSON 或 XML 的方式解析这个数据。

例如:

$users = [
    ['name' => 'Tom', 'age' => 18],
    ['name' => 'Jack', 'age' => 20],
    ['name' => 'Lucy', 'age' => 22]
];

header('Content-Type: application/json');
echo json_encode($users);

上述代码中,设置 Content-Type 为 application/json,浏览器就会解析这个数据为 JSON 格式的数据。

4. 设置缓存

在实现缓存的时候,可以用 header 函数来设置缓存的相关信息。

例如:

$date = gmdate('D, d M Y H:i:s', time()) . 'GMT';
$expire = $date + 1800; // 缓存30分钟

header('Cache-Control: public, max-age=' . 1800); 
header('Expires: ' . gmdate('D, d M Y H:i:s', $expire) . ' GMT');

上述代码中,设置了 Cache-Control 和 Expires,其中 Cache-Control 的 max-age 参数指定了缓存时间为 1800 秒,Expires 表示消息过期的时间,两者都能缓存 HTTP 响应,减少了服务器的压力。

5. 设置重定向

在网站开发中,要经常使用重定向功能,让用户访问一个链接后自动跳转到另一个链接。

例如:

header('Location: http://www.domain.com/index.html');

上述代码表示重定向到 http://www.domain.com/index.html 页面。

总之,header 函数是一个非常重要的函数,用于控制 HTTP 响应的输出,我们可以通过 header 函数来实现文件下载、跨域、设置缓存、设置内容类型、设置重定向等等。熟练使用该函数,有利于我们更好地掌控客户端与服务器之间的交互。