为什么必须在HTTP响应的开头调用SetCookie?

时间:2010-07-10 14:14:53

标签: php cookies buffer

在阅读有关饼干的过程中,我发现很难掌握以下陈述 “setcookie()必须在HTTP响应的任何输出之前调用。主要原因是PHP没有缓冲HTTP响应” 请帮我解释一下

2 个答案:

答案 0 :(得分:5)

要理解该陈述,您需要了解一些事项:

  1. HTTP响应由两部分组成,一组“标题”(键值对),然后是“主体”,它是实际数据,例如:网页或图片。
  2. 首先必须发送HTTP标头,并且即使发送了“正文”的一个字节,客户端也不再处理标头。
  3. 除其他外,Cookie以HTTP标头的形式发送给客户端。
  4. 所以它的含义是:除非你做一些特别的事情,当你“回应”某个东西或者在<?...?>块之外有任何数据时,PHP将开始使用该数据的响应体。在此之后,不能再发送标头,包括cookie设置标头。

答案 1 :(得分:2)

这只是意味着您需要确保在输出任何HTML代码之前输出所有标头(通过HTTP标头设置Cookie)。