为什么cookie和会话需要在任何HTML之前出现?

时间:2015-01-16 14:19:23

标签: php session cookies

另外,为什么白色空间灵敏度?如果JavaScript可以在HTML加载后添加cookie,那么我猜他们会如何做到根本上有所不同,但我无法弄清楚为什么会这么做。

2 个答案:

答案 0 :(得分:2)

HTTP响应包含标题和(可选,取决于标题)正文。

使用HTTP标头设置Cookie。

HTML文档(任何其他实际内容)都在正文中发送。

标题必须在正文之前发送。这可以通过以下方式完成:

  • 运行代码以在输出正文的代码之前输出它们
  • 缓存PHP程序的输出,直到它完成运行

  

另外,为什么白色空间灵敏度?

空白在HTTP响应主体中并不特殊。它的输出与任何其他内容一样。


  

如果JavaScript可以在HTML加载后添加cookie,那么我猜他们会如何做到根本上有所不同

他们没有使用HTTP标头来设置它们。

答案 1 :(得分:0)

WWW服务器部分地向您的浏览器发送数据。第一部分是一些通常称为HTTP Headers的文本。它们定义了内容的类型,大小,语言,编码,服务器也发送了一些自身的信息。 Cookie也会发送到此处,因为这是“非现场”的地方。信息。

会话略有不同。他们是服务器端。因此,您需要在服务器启动之前声明会话以呈现内容并将其发送到客户端浏览器。另一个原因是你的会话标识符是......一个cookie!所以是的,会话在没有cookie的情况下不会工作。

Cookies是客户端(浏览器端)的小文本文件。 JavaScript是客户端(浏览器端)脚本,可在浏览器中运行。因此,它不使用HTTP与您实际观看的网页进行联系。没有必要使用HTTP标头和东西。如果程序在您的计算机上运行,​​那么在计算机上修改这些文件要好得多,也不容易,不是吗?

这就是为什么JavaScript没有使用HTTP标头修改cookie文件的原因。它只是通知您的浏览器它想要修改它,并且浏览器会这样做。

Manual

中的更多信息