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


Why do cookies and sessions need to come before any HTML?

另外,为什么对空格敏感?如果 JavaScript 可以在 HTML 加载后添加 cookie,那么我猜它们是如何做到的,但我不知道为什么能很好地猜测。

HTTP 响应由标头和(可选,取决于标头)正文组成。

Cookie 使用 HTTP 标头进行设置。

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

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

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

此外,为什么空白敏感?

空格在 HTTP 响应正文中并不特殊。它像任何其他内容一样输出。


如果JavaScript可以在HTML加载后添加cookie,那么我想他们如何做到这一点会有一些根本的不同。

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

WWW 服务器将数据分部分发送到您的浏览器。第一部分是一些俗称HTTP Headers的文本。它们定义内容的类型,大小,语言,编码,服务器还发送一些信息。Cookie 也会发送到这里,因为这是"场外"信息的地方。

会话略有不同。它们是服务器端的。因此,您需要在服务器开始呈现内容并将其发送到客户端浏览器之前声明会话。另一个原因是您的会话标识符是...一块饼干!所以是的,没有 cookie 会话将无法工作。

Cookie 是客户端(浏览器端)的小文本文件。JavaScript 是在浏览器中工作的客户端(浏览器端)脚本。因此,它不使用HTTP与您联系实际观看的网站页面。没有必要使用HTTP标头之类的东西。如果一个程序在你的计算机上运行,那么在电脑上修改这些文件会更好、更容易,不是吗?

这就是为什么JavaScript不使用HTTP头来修改cookie文件的原因。它只是通知您的浏览器它想要修改这个和那个,浏览器会这样做。

手册中的详细信息

相关文章: