在不同的页面上使用相同的cookie(cookie路径)

3
我有一个应用程序,需要将一些信息存储在cookie中。我有一个索引页面,并将一些信息放入cookie中(例如,某个变量名)。索引页面的cookie路径为/Main/。在另一个页面中,我需要读取此cookie,并在必要时进行修改。但是另一个页面的cookie路径是/Main/info/。浏览器只会创建一个新的cookie,但我需要覆盖它并在所有页面上使用具有路径/Main/的同一个cookie。 我该怎么做?

你是如何创建cookie的?通常情况下,cookie是按域而不是路径设置的。 - Michael Aaron Safyan
我以这个指南作为例子:http://www.w3schools.com/js/tryit.asp?filename=tryjs_cookie_username - user721588
@Bob,抱歉问这种问题,但你怎么知道你的 cookies 有这些路径?基本上,如果您没有指定 cookies 路径,则它们在域范围内。 - ted
这些答案有没有对您有帮助?如果有的话,请接受其中一个。 - Ja͢ck
2个回答

3

在创建cookie时,添加 path=/; 或指定路径。这将防止浏览器为每个域创建重复的cookie。

针对其中一条评论,如果您查看Google Chrome及其如何显示cookie,它会向您显示路径。如果您使用相同的cookie名称而不指定路径,则会为每个路径创建一个cookie。

注意:Internet Explorer不会执行相同的操作,它每个域只有单个文本文件。


1
您应该为所有SET-COOKIE命令定义一个路径,与请求的资源的子路径无关(例如path=/Main)。通常情况下,您应该使用尽可能长的路径...(但是您将不得不使用所有使用相同cookie的资源的父路径)。
仅当您的应用程序拥有完整域并且需要对具有不同顶级路径的资源使用cookie时(例如/main/.../secondary/.../unimportant/...),才应仅使用根目录(/)。
为什么:
  • 安全原因
  • 防止其他应用程序在同一域上产生副作用

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接