默认情况下,请求代码中不设置任何header,则响应头由服务器的一些默认配置来返回,而这些默认设置是是实现基本服务器运转的一些指令。
Connection keep-Alive: 表示是否需要持久连接。由服务中的KeepAlive指令控制
Content-Length:有服务器自动计算,用于实现持久连接
Content-type :这个由请求的文件类型决定,默认配置时服务器中的DefaultType text/plain
Date:当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。
Server:由apache中的 ServerTokens 指令来配置
X-Powered-By:由php.ini中的 expose_php = Off 决定是否显示
常用自定义header头:
一、浏览器cache设置:(Cache-control:)
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况。
Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求)而使用本地浏览器中的缓存,等同Cache-Control中的max-age 如
果同时设置了Expires和Cache-Control中的max-age则Expires会被max-age覆盖
注意:(在HTTP/1.0中可能部分没实现,仅仅实现了Pragma: no-cache)
1) 什么是”Last-Modified”?
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:
Last-Modified: Fri, 12 May 2006 18:53:33 GMT
客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:
If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT
如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not
Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而
保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
案例1:
我写了一个礼品兑换功能,但用户兑换完成后,后退又进入兑换页面,如何使得用户使用浏览器自带的后退按钮后退后页面重新读取php代码。
// 设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。
header("Expires: Mon, 26 Jul 1970 05:00:00 GMT");
//设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强制浏览器获取最新资料
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
//告诉客户端浏览器不使用缓存,HTTP 1.1 协议 header("Cache-Control: no-cache, must-revalidate");
//告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议 header("Pragma: no-cache");
Connection keep-Alive: 表示是否需要持久连接。由服务中的KeepAlive指令控制
Content-Length:有服务器自动计算,用于实现持久连接
Content-type :这个由请求的文件类型决定,默认配置时服务器中的DefaultType text/plain
Date:当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。
Server:由apache中的 ServerTokens 指令来配置 X-Powered-By:由php.ini中的 expose_php = Off 决定是否显示