路径参数可以添加到$ _COOKIE []吗? 。如何使用PHP访问同一个域的不同路径上的cookie值?
回答
如果您尝试访问为当前域设置的同一域上的其他路径设置的Cookie,则无法完成此操作。浏览器本身限制了这一点,只发送适合当前路径的cookies。
Facebook怎么样?,Facebook为域名“facebook.com”写入cookie,但它使用来自“www.facebook.com”的这个cookies – user962284 2012-06-07 23:42:49
@ user962284你确定吗?我很确定FB在www.facebook.com上设置了所有的cookies,因为它甚至无法访问facebook.com(他们将您重定向到www) – 2012-06-08 16:18:28
这是不正确的。遵循RFC *建议的浏览器会在多个cookie具有相同名称但路径不同的情况下将这两个值发回。实际上,PHP是阻碍它的;请看我发布的答案。 – 2014-06-15 02:44:09
是的,这是第四个参数,但你只能够访问该cookie,如果它是使用当前目录所在的路径设置
这混乱......这是从PHP:
Cookie将在其上可用的服务器上的路径。如果设置为 '/',则Cookie将在整个域中可用 。如果设置为 '/ foo /',则该cookie将仅在和/或域的所有子目录(如 /foo/bar /)内可用的 。默认 值是 饼干正在被设定的当前目录。
http://php.net/manual/en/function.setcookie.php
你访问它像任何其他的cookie。如果脚本有权访问它,它将在$ _COOKIE中可用。
不,这样的参数是不可能的,因为浏览器不会将路径发送到服务器。它只发送每个cookie的名称和值(所以你不能看到路径,如果它是一个会话cookie,它会到期等)。
我不认为有可能从不同的路径获取cookie,因为它可能会导致安全问题。
虽然HTTP客户端(即:浏览器)没有发回cookie设置的路径,但PHP实际上会对其数组的cookie进行假设。
如果设置两个cookie具有相同名称,一个值为“第一价值”与路径/和第二值为“第二值”与路径/测试,浏览器继推荐 - 但不是必需的 - RFC中的行为会将这两个值发回给您。当你/测试路径下访问一个URL,浏览器发送的:
Cookie: name=second-value, name=first-value
“问题”是,PHP只读取第一个值 - $ _COOKIE [“名”]将只包含没有提示“第一值”存在的值“第二值”。如果您需要访问这两个值,则需要自己分析$ _SERVER ['HTTP_COOKIE']的值 - 对于上例,这将包含“name = second-value,name = first-value”。请注意,“第二个值”首先在行,因为它设置了较长的路径。请注意RFC不保证这种行为,它只是说HTTP客户端应该这样做。
有趣的是,这是特定于子目录吗?如在中,对子目录的请求将收到根的cookie,但对根的请求不会接收子目录的cookie?另外我很好奇浏览器是否实际执行此操作:) – 2014-06-15 09:08:25
更正,子目录或更长的路径将始终收到一个匹配较短路径的cookie。所有浏览器都以这种方式实现。唯一不能保证的行为是,如果你有多个具有相同名称但路径不同的cookie - 你应该*以一个固定的顺序接收这两个cookie,但RFC不作任何承诺。 – 2014-06-26 18:05:35
这实际上是正确答案,因为它给出了为什么发生这种情况的完整解释。我应该注意到,虽然你不能告诉'$ _COOKIE []'一个路径,但是这个缺失,你可以告诉'setcookie'一个路径。我们正在用API来面对这个问题。所以你可以告诉'setcookie'设置根路径,然后在任何地方访问它,例如:'setcookie('name','data',expire,'/')'。最后一个参数是路径并将其设置为'/'使其成为根路径。这将解决OP的问题。 – jfreak53 2014-10-24 15:48:31
- 1. 相同的域相同的端口,但不同的路径的cookie问题
- 2. ASP.NET访问来自不同域的Cookie
- 3. Spring Security:如何设置与上下文路径不同的RememberMe cookie url路径?
- 4. 如何使用System.DirectoryServices访问不同域上的Web服务器
- 5. 访问路径,同时使用FileUploadControl
- 6. 从不同域访问时看起来不同的一个PHP应用程序
- 7. 我们如何才能使不同的URL指的是同一个域上同一cookie和session
- 8. 如何跨两个不同的域使用Cookie?
- 9. PHP中不同域名的Cookie
- 10. 如何使用Amazon S3上的多个域访问同一存储桶?
- 11. 如何使2进程访问相同的路径?
- 12. 如何使用命令行从不同路径启动glassfish域
- 13. 不同领域的Cookie
- 14. 如何使用不同的ms访问
- 15. 删除具有相同名称但路径不同的Cookie
- 16. iis web.config将某个域/路径重定向到一个新域/相同路径
- 17. 如何使用BrowserRouter访问React中的前一个路径?
- 18. 不同的路径
- 19. PHP访问路径
- 20. 如何使一个链接到一个PHP的cookie,但不同的输出
- 21. 如何访问C#中不同域上的文件
- 22. 如何从不同域上的iframe访问父DOM?
- 23. 如何使用powershell运行不同路径的个人宏
- 24. 使用htaccess将现有域上的完整路径重定向到子域上的相同路径
- 25. 如何从cookie中读取cookie,当cookie设置在不同的子域上时?
- 26. 如何从不同的地方访问同一个会话?
- 27. 在相对于用户当前URL路径的不同路径中设置cookie
- 28. 使用不同的路径Yii中
- 29. 问题与重定向选择路径到不同的域
- 30. 在不同路径的相同域中部署多个Rails应用程序
您可能会发现['$ cookie-> setPath($ path)'](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie。php#L104)有帮助,在[这个独立的库](https://github.com/delight-im/PHP-Cookie)中找到。 – caw 2016-09-21 03:09:27