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

PHP中的header()函数:如何控制HTTP响应头?

发布时间:2023-06-24 17:59:01

header()函数是PHP中用于控制HTTP响应头的函数。在HTTP协议中,响应头是在响应数据中发送的一系列元数据,用于提供关于服务器和响应主体的附加信息。这些响应头可以包括数据类型、字符编码、缓存控制、跨域资源共享等。通过使用header()函数,我们可以动态地控制响应头的内容,并影响浏览器行为和页面渲染。

语法与用法:

header ( string $header [, bool $replace = true [, int $http_response_code ]] ) : void

其中,参数header是必须的,它表示要设置的响应头信息,如Content-Type、Content-Disposition、Cache-Control等;

参数replace是可选的,其默认值为true。如果将replace设置为true,则会覆盖掉同名的旧头信息,否则,如果同名的头信息已经存在,那么新的头信息将被忽略;

参数http_response_code也是可选的,用于指定响应状态码。如果HTTP响应码不是200,则会自动发送前三个参数(header、replace和http_response_code)中的最后一个参数作为HTTP响应代码。

示例:

设置Content-Type头信息

header('Content-Type: text/html; charset=utf-8');

设置文件下载

header('Content-Disposition: attachment; filename="example.pdf"');

设置缓存控制

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

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

禁用浏览器缓存

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

header('Pragma: no-cache');

实现HTTP重定向

header('Location: http://www.example.com/');

常用的HTTP响应头:

Content-Type:用于指定返回结果的MIME类型。

Content-Length:用于指定返回结果的长度。

Content-Disposition:用于指定返回结果的文件名和是直接显示还是下载保存。

Cache-Control:用于控制缓存机制的行为,如no-cache、private、max-age等。

Expires:表示响应结果的过期时间。

ETag:表示响应结果的MD5值,常用于缓存机制。

Access-Control-Allow-Origin:允许跨域资源共享,如允许所有来源访问Access-Control-Allow-Origin: *。

总的来说,header()函数非常灵活和强大,可以方便地实现各种控制HTTP响应头的功能。同时,我们也应该谨慎使用header()函数,避免产生安全问题。