因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制。
为什么cookie在http头里面,就必须要在其他信息输出以前进行设置?
为什么cookie在http头里面,就必须要在其他信息输出以前进行设置?
2015-04-14
这和HTTP协议有关。平时我们使用浏览器访问网站,浏览器作为客户端,而网站(目标服务器)作为服务端。我们的浏览器发送访问请求给服务器,这个访问请求叫“HTTP Request”,而服务器接收到请求后,回应客户端,这个叫“HTTP Response"。
这里看一个例子(HTTP Request,即HTTP请求)
POST / HTTP/1.1
Host: www.baidu.com
licenseID=string&content=string&/paramsXML=string
第一行,使用的是POST方法,访问host下的“/”,也就是主页啦。使用HTTP协议的1.1版本
第二行,服务器地址。
第三行,空行(这个是必须要的)
第三行,内容。因为是POST方法,所以嘛,发送的数据是放在body里面的。如果是GET,就是在第一行。比如:GET /index.php?username=aaa&nickname=jackchen HTTP/1.1
上面那个如果觉得太麻烦,可以简单这么看:
请求行
请求头
(空行,必须)
内容
HTTP请求其实也是数据,只是封装起来的数据而已。数据的发送都是从头开始的。然后呢,cookie是在请求头的,它在内容上面啊。如果你内容先输出的话。。。不觉得很奇怪?
表达能力不好,请参考:
http://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE
书籍推荐:
HTTP权威指南
举报