Jan*_*nen 9

如果您尝试访问为当前域中的不同路径设置的cookie,则无法完成.浏览器本身限制了这一点,只发送适合当前路径的cookie.


小智 5

尽管HTTP客户端(即:浏览器)没有发送回cookie设置的路径,但是PHP实际上就$ _COOKIE数组对cookie进行了假设。

如果您设置两个具有相同名称的cookie,一个cookie的路径为/的值是“ first-value”,另一个使用path / test的路径是“ second-value”的值,那么浏览器将遵循以下建议(但不是必需)的行为: RFC会将这两个值发送回给您。当您访问/ test路径下的URL时,浏览器将发送以下内容:

Cookie: name=second-value, name=first-value
Run Code Online (Sandbox Code Playgroud)

“问题”是PHP仅读取第一个值- $ _COOKIE ['name']仅包含值“ second-value”,而没有暗示“ first-value”存在。如果您需要访问这两个值,则需要自己解析$ _SERVER ['HTTP_COOKIE']的值-对于上面的示例,该值将包含“ name = second-value,name = first-value”。请注意,“第二个值”排在第一位,因为它设置了更长的路径。请注意,RFC不能保证这种行为,它只是说HTTP客户端应该这样做。