Cross-domain-cookies-一个可能是个新主意

问题描述 投票:20回答:2

我的好友Carsten Lau提出了有关如何读取跨域Cookie的有趣想法。

情况:您想从域“ B”上设置的域“ A”中读取Cookie。想法:从域“ A”上的客户端,对域“ B”上的动态资源执行get请求-f.e.图像或javascript,实际上在服务器“ B”上是一种能够读取Cookie(例如PHP,Java等)的编程语言。通过该请求,您可以发送唯一的标识符(例如会话ID)。因此,在客户端上查看域“ A”上的站点的代码可能如下所示:

<img src="www.domainB.com/?getCookie.php?sessionID=1234">

[现在是有趣的部分,服务器B在服务器端读取由域“ B”设置的cookie,并将具有提供的会话ID的结果写入域“ A”可访问的DB中,或者返回包含以下内容的响应: cookie信息发送到域“ A”上的客户端,然后通过AJAX将其发送到服务器“ A”。

我很确定我们还没有发现一个缺陷。我个人认为服务器“ B”将无法读取Cookie信息,因为客户端浏览器的URL指向域“ A”,但是当然,上面解释的“ getCookie”请求也指向“ B”。

请告诉我们您对此有何看法,为何有效或为何无效。令我惊讶的是,一个小的概念证明是成功的。

javascript cookies cross-domain
2个回答
16
投票

这很正常,因为您可以控制2个域。这就是大多数网站通过跨域单点登录的方式。但是,如果您无法控制第二个域,则无法从中读取Cookie。


0
投票

我整理了一个NPM软件包来帮助跨域cookie / localStorage的使用。我知道这篇文章有点老,但是我想分享一下,以防其他人对此有所帮助:

通过使用托管在域A上的iframe,您可以将所有用户数据存储在域A上,并通过将请求发布到域A iframe来引用该数据。

因此,域B,C等可以注入iframe并向其发布请求以存储和访问所需数据。域A成为所有共享数据的集线器。

通过域A内的域白名单,您可以确保只有从属站点可以访问域A上的数据。

技巧是将代码放在域A的iframe中,该代码能够识别正在请求的数据。上面的NPM模块中的自述文件将更深入地介绍该过程。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.