5

我想知道是否可以在另一个域而不是我当前的应用程序域名下获取 cookie?

我正在构建一个访问另一个网站的 api 的应用程序。如果用户已经从其他站点登录,我的浏览器将在该域名下创建一个 cookie。例如,用户在 www.example.com 下登录,我的浏览器会存储一个 cookie: cookies['token']在 www.example.com 域下。当用户访问我的网站 www.mywebsite.com 时,如何在我的 rails 服务器中获取 www.example.com 下的 cookie?

任何帮助都非常感谢。

4

2 回答 2

4

这可以做到,但它需要客户端、您的网站和您的其他网站一起工作。您有一个知道如何向站点 A 进行身份验证的客户端。它希望将站点 B 视为它知道如何针对站点 A 进行身份验证的用户。完成此操作的基本方法是让客户端联系站点 A,对自身进行身份验证,从站点 A 获取站点 B 可以信任的令牌,然后将该令牌交给站点 B。

实际上,您想要构建一个非常具体的 OpenID 或 OAuth 案例。这当然是可能的,但是您需要对 www.example.com 进行一些更改才能使其正常运行。如果你能做到这一点,那就太好了。

首先阅读有关 OAuth 的所有内容。你不需要完全使用它(虽然你可以),但它会帮助解释你需要做什么: http: //hueniverse.com/oauth/

于 2012-06-18T22:45:55.047 回答
1

您可以跨域的不同子域共享 cookie,但不能跨多个域名共享 cookie。

Cookie 由浏览器存储,浏览器不允许您访问或存储来自外部域名的 cookie。如果浏览器确实允许您这样做,那将是一个巨大的安全漏洞。

但是,您可以在域名之间共享存储在服务器上的会话数据。这可能不是完全微不足道的,但由于会话信息存储在服务器上,如果需要,您可以在应用程序之间访问服务器上的信息。如果您的会话数据存储在数据库中,那么所需要做的就是授予对两个域的数据库访问权限。如果需要,您实际上可以将数据库打开到外部域名,并让外部域直接连接到服务器上的数据库。

于 2012-06-19T21:56:25.240 回答