root@kl20080094:~# curl -I "http://www.xxx.com"
HTTP/1.1 200 OK
Server: nginx/0.8.53
Date: Tue, 07 Feb 2012 02:48:21 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.10
Set-Cookie: PHPSESSID=hmkn089c389apqisr006vu5pr2; path=/
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Tue, 07 Feb 2012 02:48:21 GMT
Cache-Control: post-check=0, pre-check=0
P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Pragma: no-cache
Cache-control: private
这个就是http协议内容,必须在正文发出之前要下行到浏览器的,其中就包括了cookie控制
Set-Cookie: PHPSESSID=hmkn089c389apqisr006vu5pr2; path=/
Set-Cookie: PHPSESSID=hmkn089c389apqisr006vu5pr2; path=/
这个就是设置cookie的
通过php的header语句来设计,就是告诉PHP,下行协议内容里,要把cookie的设置加进去,通过php的setcookie也是一样的原理。
其实这也可以理解,为什么setcookie和header,为什么一定要在 echo 或printf命令之前使用,因为是协议头,必须在正文下行之前发到浏览器。