cookie的记录保存时和URL层级有关系吗?

1年前 (2023-03-31)阅读193回复0
翱翔MJ
翱翔MJ
  • 管理员
  • 注册排名1
  • 经验值3379
  • 级别管理员
  • 主题545
  • 回复327
楼主

是的,Cookie 的记录保存时和 URL 层级有关系,具体表现在两个方面:

Cookie 的记录保存时在不同 URL 层级下是不同的。当设置 Cookie 时,可以通过设置 path 参数来指定 Cookie 在哪些 URL 层级下有效。如果不指定 path 参数,则默认为当前 URL 的路径。例如,以下代码设置了一个名为 user 的 Cookie,有效期为 1 小时,在 / 路径下有效:

setcookie('user', '123', time() + 3600, '/');

这意味着,只有在以 / 开头的 URL 下,才能够读取到该 Cookie。例如,http://example.com/http://example.com/index.php 等 URL 都可以读取到该 Cookie,但 http://example.com/user/login.php 等不以 / 开头的 URL 则无法读取到。 2. Cookie 的记录保存时在同一 URL 层级下是共享的。在同一 URL 层级下,设置的 Cookie 是共享的,可以被该 URL 层级下的所有页面读取到。例如,在 http://example.com/user/login.php 页面设置了一个名为 user 的 Cookie,有效期为 1 小时,路径为 /user

setcookie('user', '123', time() + 3600, '/user');

这意味着,在 /user 路径下的所有页面均可以读取到该 Cookie,例如 http://example.com/user/profile.phphttp://example.com/user/settings.php 等页面都可以读取到该 Cookie。 需要注意的是,由于 Cookie 存储在客户端,因此可以被用户篡改或删除。为了保证 Cookie 的安全性和可靠性,建议在设置 Cookie 时,设置 httponly 参数为 true,禁止 JavaScript 访问 Cookie,从而防止 XSS 攻击。例如:

setcookie('user', '123', time() + 3600, '/', '', true);

0
回帖

cookie的记录保存时和URL层级有关系吗? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息