什么是头信息?
这里只作简朴表明,具体的本身看http协议。
在
HTTP协议中,处事器端的答复(response)内容包罗两部门:头信息(header) 和
体内容,这里的头信息不是HTML中的<head></head>部门,同样,体内容也不是<BODY><
/BODY>。头信息是用户看不见的,内里包括了许多项,包罗:处事器信息、日期、内容的长度等。而体内容就是整个HTML,也就是你所能瞥见的全
部对象。
头信息有什么用呢?
头信息的浸染许多,最主要的有下面几个:
1、跳转:当欣赏器接管到头信息中的 Location: xxxx 后,就会自动跳转到 xxxx 指向的URL地点,这点有点雷同用 js 写跳转。可是这个跳转只有欣赏器知道,不管体内容里有没有对象,用户都看不到。
2、指定网页的内容: 同样一个XML文件,假如头信息中指定:Content-type: application/xml 的话,欣赏器会将其凭据XML文件名目理会。可是,假如头信息中是:Content-type: text/xml 的话,欣赏器就会将其看作存文本理会。(欣赏器不是凭据扩展名理会文件的)
3、附件:不知道各人有没 有留意,有些时候在一些网站下载对象,点下载毗连今后,功效欣赏器将这个附件当成网页打开了,内里显示的都是乱码,这个问题也和头信息有关。有时候欣赏器 按照Content-type 来判定是打开照旧生存,这样有时就会判定错误(主要是网站设计者健忘写Content-type)。其实,尚有一个可以来指定该内容为附件、需要生存,这 个就是:Content-Disposition: attachment; filename=”xxxxx”
在PHP中如何写?
1、跳转:
header(“Location:
”);
2、指定内容:
header(‘Content-type: application/pdf’);
3、附件:
header(‘Content-type: application/pdf’); //
指定内容名目
header(‘Content-Disposition: attachment; filename=”downloaded.pdf”‘);
// 指定内容为附件
readfile(‘original.pdf’); // 打开文件,并输出
最后要提醒各人留意一点,所有头信息都必需在体内容之前,假如一旦有任何输出了的话,header函数写的头信息就没用了。好比,在文件最开头 的<?php 处,假如前面有空格可能有空行,那header函数就没用了(其实可以通过配置:output_buffer来办理,anyway),为什么这样,可以看 看HTTP协议,很简朴。
<?php //200 正常状态 header('HTTP/1.1 200 OK'); // 301 永久重定向,记得在后头要加重定向地点 Location:$url header('HTTP/1.1 301 Moved Permanently'); // 重定向,其实就是302 临时重定向 header('Location: '); // 配置页面304 没有修改 header('HTTP/1.1 304 Not Modified'); // 显示登录框, header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="登录信息"'); echo '显示的信息!'; // 403 克制会见 header('HTTP/1.1 403 Forbidden'); // 404 错误 header('HTTP/1.1 404 Not Found'); // 500 处事器错误 header('HTTP/1.1 500 Internal Server Error'); // 3秒后重定向指定地点(也就是刷新到新页面与 <meta http-equiv="refresh" content="10; /> 沟通) header('Refresh: 3; url=http://www.guoxiongjie.com/'); echo '10后跳转到'; // 重写 X-Powered-By 值 header('X-Powered-By: PHP/5.3.0'); header('X-Powered-By: Brain/0.6b'); //配置上下文语言 header('Content-language: en'); // 配置页面最后修改时间(多用于防缓存) $time = time() - 60; //发起利用filetime函数来配置页面缓存时间 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); // 配置内容长度 header('Content-Length: 39344'); // 配置头文件范例,可以用于流文件可能文件下载 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="example.zip"'); header('Content-Transfer-Encoding: binary'); readfile('example.zip');//读取文件到客户端 //禁用页面缓存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Pragma: no-cache'); //配置页面头信息 header('Content-Type: text/html; charset=iso-8859-1'); header('Content-Type: text/html; charset=utf-8'); header('Content-Type: text/plain'); header('Content-Type: image/jpeg'); header('Content-Type: application/zip'); header('Content-Type: application/pdf'); header('Content-Type: audio/mpeg'); header('Content-Type: application/x-shockwave-flash'); //.... 至于Content-Type 的值 可以去查查 w3c 的文档库,哪里很富厚 ?>