我们先来了解下PHP header()函数,以及MIME类型.
header()函数向客户端发送原始的HTTP报头。即必须在任何实际的输出被发送之前调用header()函数,不过在PHP4以及更高的版本中,您可以使用输出缓存来解决此问题);
提示:
很多phper用header()来跳转页面的时候会很容易的忽略了header()函数调用之后还会继续运行下面的程序代码,这会导致不必要的麻烦.所以调用header()之后要用die();或者exit;等来终止下一步操作.
MIME类型
在html文件中可以使用content-type属性表示,描述了文件类型的互联网标准.MIME类型能包含视频、图像、文本、音频、应用程序等数据.
header在网站开发中的运用
header("P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
header("Set-Cookie: test=axis; expires=Sun, 23-Dec-2018 08:13:02 GMT; domain=.xxx.com; path=/");
对于IE来说(默认安全级别下),iframe、img、link等标签都是只发送session,cookie(又叫第一方cookie),拦截本地cookie发送(又叫第三方cookie)。当这些标签跨域引用一个页面,实际上是发起了一次GET请求。
如果这个跨域的请求,HTTP返回头中带有Set-Cookie , 那么这个cookie对浏览器来说,实际上是无效的。
如果 set-cookie 成功,再次请求该页面,浏览器应该会 sent 刚才 recieve 到的cookie。可是由于前面说的跨域限制,在IE里的iframe标签是 set-cookie不成功的,所以无法sent刚才收到的cookie。 这里无论是 session cookie 还是本地cookie都是一样。
但是这种情况在加入了P3P header 后会改变。
P3P header允许跨域访问隐私数据,从而可以跨域set-cookie成功.
php header编码:
header("Content-type: text/html; charset=utf-8");
定义文档语言:
header('Content-language: en');
301 路径URL重定向:
301代表永久性跳转(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移,建议使用301来做重定向。
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://blog.sina.com.cn/chinesephper/');
die();
302 路径URL重定向:
302代表暂时性跳转(Temporarily Moved),不少SEO曾广泛应用这项技术作弊,各大主要搜索引擎均加强了打击.即使网站客观上不是spam(专门针对那些欺骗搜索引擎的信息),也很容易被搜寻引擎容易误判为spam而遭到惩罚.
header('Location: http://blog.sina.com.cn/chinesephper/');
die();
提示:
301,302的主要区别:
301永久跳转,表示本网页永久性转移到另一个地址;302临时跳转,表示暂时转向到另外一个网址;302容易被搜索引擎视为spam,301则不会.
404 错误页面提示:
404页面通常为用户访问了网站上不存在或已删除的页面,服务器返回的404错误的一个网站必备页面,有利于用户体验与SEO优化.如果站长没有设置404页面,会出现死链接.蜘蛛爬行这类网址时,不利于搜索引擎收录.
header('HTTP/1.1 404 Not Found');
503 服务不可用:
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 60');
Retry-After 响应头标域,由服务器和状态编码503(无法提供服务)配合发送,以标明再次请求之前应该等待多长时间.
PDF PHP输出PDF文件:
如果想提示用户保存所发送的数据,例如一个生成的PDF文件,可以通过发送Content-Disposition标头提供推荐的文件名来强制浏览器弹出一个保存文件对话框.
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="续梦PHP.pdf"');// 这样做就会提示下载PDF文件续梦PHP.pdf
提示:
readfile('续梦PHP.pdf');// 函数读入续梦PHP.pdf并写入到输出缓冲
file_get_contents('续梦PHP.pdf'); //把整个文件读入一个字符串中
Cache 解析浏览器的输出缓存:
header('Expires: Mon, 13 Jan 2014 00:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Pragma: no-cache');
CSS:
header('Content-Type: text/css');
JSON:
header('Content-type: application/json');
Javascript header:
header('Content-Type: application/javascript');
Images:
header('Content-Type: image/jpeg');
For PNG:
header('Content-Type: image/png');
提示:IE6,IE8浏览器中png的图片的ContentType体现的是image/x-png,使用以x-开头的方法标识这个类别,例如:x-gzip,x-tar等.
For BMP:
header('Content-Type: image/bmp');
谢谢关注websites博客!