当前位置: 首页 > 知识库问答 >
问题:

在子域和域之间共享cookie

游勇军
2023-03-14

我有两个问题。我理解,如果我在cookie中指定域为.mydomain.com(带前导点),那么所有子域都可以共享一个cookie。

subdomain.mydomain.com是否可以访问在mydomain.com中创建的cookie(没有www子域)?

如果在subdomain.mydomain.com中创建,mydomain.com(没有www子域)是否可以访问cookie?

共有2个答案

宁良平
2023-03-14

我不确定@CMBuckley答案是否显示了全部情况。我读到的是:

除非cookie的属性另有指示,否则cookie只返回到原始服务器(例如,不返回到任何子域),并且它在当前会话结束时过期(由用户代理定义)。用户代理忽略无法识别的Cookie。

RFC 6265

8.6.  Weak Integrity

   Cookies do not provide integrity guarantees for sibling domains (and
   their subdomains).  For example, consider foo.example.com and
   bar.example.com.  The foo.example.com server can set a cookie with a
   Domain attribute of "example.com" (possibly overwriting an existing
   "example.com" cookie set by bar.example.com), and the user agent will
   include that cookie in HTTP requests to bar.example.com.  In the
   worst case, bar.example.com will be unable to distinguish this cookie
   from a cookie it set itself.  The foo.example.com server might be
   able to leverage this ability to mount an attack against
   bar.example.com.

对我来说,这意味着您可以保护cookie不被子域/域读取,但不能阻止将cookie写入其他域。因此有人可能会通过控制同一浏览器访问的另一个子域来重写您的站点cookie。这可能不是什么大问题。

@cmbuckley/为那些像我一样在他的答案中错过了的人提供的令人敬畏的cookies测试站点;值得向上滚动并向上投票/:

  • http://scripts.cmbuckley.co.uk/cookies.php
秦飞航
2023-03-14

只有在set-cookie标头中显式命名域时,mydomain.comsubdomain.mydomain.com两个域才能共享cookie。否则,cookie的作用域将限于请求主机。(这被称为“仅有主机的cookie”。看看什么是仅有主机的cookie?)

例如,如果您从subdomain.mydomain.com发送了以下标头,则不会为对mydomain.com的请求发送cookie:

Set-Cookie: name=value

但是,如果您使用以下内容,则它将在两个域上都可用:

Set-Cookie: name=value; domain=mydomain.com

将为mydomain.com的任何子域发送此cookie,包括嵌套的子域,如subsub.subdomain.mydomain.com

在RFC 2109中,没有前导点的域意味着它不能在子域上使用,只有前导点(.mydomain.com)才允许它跨多个子域使用(但不能跨顶级域,所以您所问的在旧规范中是不可能的)。

然而,所有现代浏览器都尊重较新的规范RFC6265,并且将忽略任何前导点,这意味着您可以在子域和顶级域上使用cookie。

总之,如果您在mydomain.com中设置了一个类似上面第二个示例的cookie,则subdomain.mydomain.com可以访问它,反之亦然。这也可以用于允许sub1.mydomain.comsub2.mydomain.com共享cookie。

另见:

  • www vs no-www和cookies
  • 试用Cookie测试脚本
 类似资料:
  • 问题内容: 我有一些cookie存储在http://sub1.myserver.com中 ,我希望能够在http://myserver.com中看到它们。 问题答案: 我能够使用以下代码来做到这一点:

  • 问题内容: 因此,我有一个包含3个APK /应用程序的应用程序。如何在应用之间共享数据库?我假设当前在应用程序之间不可见的原因是因为它们在不同的上下文中传递。 谢谢 问题答案: 来自Realm的基督徒。目前,您要问的内容确实不可行。正如其他人指出的那样,实际上只有两种方法。 1)公开一个ContentProvider。但是,这需要您将RealmResults映射到Cursor,这并非易事。我们正计

  • 问题内容: 我正在编写一个HTML5应用程序,该应用程序使用JSONP从几个不同的来源收集数据。我对GET所做的任何事情都可以正常工作。我现在正尝试发布数据,并且遇到了一个有趣的问题。我需要将数据从我的应用程序发布到另一个应用程序,该应用程序从本地计算机运行。我正在尝试编写具有跨平台功能的移动应用程序(请考虑使用Pulse / Flipboard),因此该代码将始终从本地源运行。我的思考过程如下:

  • 首先,因为我在一个共享主机上,我不能将我的公共文件夹的内容直接放入root。我必须将整个项目放入public_html目录,并使用. htaccess指向下面的公共文件夹(这对于单个Laravel项目来说很好): 我现在用主机创建了一个子域,它在我的公共html目录中创建了一个名为store的目录。领域通用域名格式。这将是一个完全不同的Laravel项目。如果我将常规文件夹结构与。htaccess

  • 问题内容: 我想在以下两个指令之间共享: 在HTML中,我有: 我创建了具有隔离范围的名为“ directive1”的指令,并将名称“ table”分配给该属性。我无法在其他指令中访问此作用域属性。 那么,如何访问另一个指令的作用域呢? 问题答案: 您可以对需要跨指令同步的项目执行操作。 或者,您可以将对象传递给指令1隔离范围,该范围将充当通信机制。在此对象上,如果更改子属性(如),则会影响父范围

  • 我目前正在从事一个托管在域上的laravel项目。此应用程序的一部分(某些功能)必须位于不同的域上。我在我的网上找到了一条路。在php中,我用以下命令映射了所有路由: 以及需要以相同方式位于另一个域上,但具有不同域的路由。好啊在主域中,我创建了一个具有src属性的图像: 指向此方法路线: 它起作用了。我在不同的域上共享同一个会话,但是,我想问你们,对于这个案例场景,你们是否知道更好的方法。我知道这