我有一个疑问,如果你能清除它,我将不胜感激.
饼干
什么是饼干?当描述为实体时,通常在对话中引用cookie,您很容易被误导.Cookie实际上只是HTTP协议的扩展.具体来说,还有两个额外的HTTP标头:Set-Cookie和Cookie.这些cookie的操作最好通过以下一系列事件来描述:
客户端向服务器发送HTTP请求.
服务器使用Set-Cookie:foo = bar向客户端发送HTTP响应.
客户端向服务器发送带有Cookie:foo = bar的HTTP请求.
服务器向客户端发送HTTP响应.
因此,典型的场景涉及两个完整的HTTP事务.在步骤2中,服务器要求客户端在将来的请求中返回特定的cookie.在步骤3中,如果用户的首选项设置为允许cookie,并且如果cookie对此特定请求有效,则浏览器再次请求资源但包括cookie.
现在我的问题是.......
为什么你无法确定用户的首选项是否设置为在第一次请求期间允许cookie ????
另一个答案已经是正确的,如果没有"触发"它们的话,步骤3和4将不会发生.当检测用户是否启用了cookie时,通常使用HTTP重定向,或者可能使用某些Javascript(例如,如果您还想检测到他们启用了Javascript).
第一个请求是要求客户端设置cookie,第二个请求是检查客户端是否实际执行了您要求它执行的操作.
您无法检测cookie是否在没有第二个请求的情况下启用的原因是因为许多客户端在看到"Set-Cookie"标头时会提示用户是否要接受它.因此,客户端不可能在初始请求中包含特殊的"我接受cookie"或"我不接受"标题,因为在您实际使用cookie时,它只是不知道答案.
这种过程有许多相似之处:
等等.因此,要检查用户是否允许cookie,您必须实际尝试设置cookie.