前言
通常我们在PHP文件的入口都会或多或少地设置header函数,或许有些人知道它的作用,有些人只是用来重定向或者设置编码格式。 这里我就来归纳总结一下header函数的作用。
概述
PHP的header函数作用在php4-php7的版本中,用于发送原生的 HTTP 头。
请注意 header() 必须在任何实际输出之前调用,不管是普通的 HTML 标签,还是文件或 PHP 输出的空行,空格。这是个常见的错 误,在通过include,require,或者其访问其他文件里面的函数的时候,如果在header()被调用之前,其中有空格或者空行。 同样的问 题也存在于单独的 PHP/HTML 文件中。
参数
void header ( string $string
[, bool $replace
=
true [, int $http_response_code
]]
)
用法
1、设置页面编码格式:header("Content-Type: text/html;charset=UTF-8");
2、设置页面无PHP脚本缓存:
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Pragma: no-cache");
3、下载对话框:
如果你想提醒用户去保存你发送的数据,例如保存一个生成的PDF文件。你可以使用Content-Disposition的报文信息来提供一个推荐的文件名,并且强制浏览器显示一个文件下载的对话框:
// 读取PDF文件
header('Content-type: application/pdf');
header('Content-type: application/pdf');
//或者保存PDF文件
header('Content-Disposition: attachment; filename="downloaded.pdf"');
4、重定向网址:header("Location: http://xxx/");
提示
1、你所有需要输出到浏览器的数据将会一直缓存在服务器端,直到你发送他们,这将造成比较大的资源开销。你可以是用输出缓冲来避开这个问题。你可以通过在脚本里使用ob_start()和ob_end_flush()或者直接在你的php.ini文件里设置output_buffering,也可以直接在服务器的配置文件里设置。
2、header函数同样可以支持跳转https协议,如:
header("Location: https://www.google.com");
如果需要同时兼容http和https,可以这么写:
header("Location: //www.google.com");
3、通过设置header头允许ajax跨域访问:
header('Access-Control-Allow-Origin:http://www.xxx.com');//允许xxx域跨域请求
4、通过设置header头实现跨域访问、设置cookie:
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
以上即是关于header函数常用的方法归纳和总结,关于跨域问题,可参考以下文章详细了解: