浏览器与Web服务器通过HTTP协议进行通讯,由于HTTP协议是无状态协议,为了保存状态,WEB开发中使用了Cookie技术。Cookie附着在HTTP协议的头部。
如果一个PHP程序设置了一个Cookie:
setcookie("TestCookie", “CookieValue”);
那么客户端浏览器请求此程序时,在Http响应头会有一条如下信息:
Set-Cookie TestCookie=cok_value
浏览器在收到响应信息后,会把这个Cookie写入到内存中,在此后,浏览器每次向服务器请求时都会发送这个Cookie,Http请求头附着的Cookie信息如下:
Cookie TestCookie=CookieValue
上面是会话期Cookie,如果一个PHP程序设置了一个期限Cookie,例如:
setcookie("TestCookie2", “CookieValue2”, time()+3600);
那么客户端浏览器请求此程序时,Http响应头附着的Cookie信息形式如下:
Set-Cookie TestCookie2=cok_value2;expires=Fri, 07-Dec-2012 08:33:11 GMT
浏览器在收到此响应信息后,会用Cookie的Expires属性时间值和当前浏览器的系统时间进行比对,如果当前时间小于Expires属性时间值,那么这个Cookie会被浏览器写入硬盘。如果当前时间大于Expires属性时间值,那么这个Cookie会被浏览器删除。从浏览器对期限Cookie的处理过程可以看出,在服务器端,用服务器系统时间设置的期限Cookie,当服务器的系统时间和客户端的系统时间不一致特别是相差太大时,设置的Cookie会出现异常。