在两个网站之间共享cookie

Sea*_*ean 28 cookies http

我已经建立了一个网站(A),它从一个单独的Web服务登录并检索客户数据.

拥有(A)的组织也有一个网站(B),它有一个网络表格.他们希望(A)上的登录客户能够点击(B)并查看预先填充的表格及其详细信息.

这意味着(A)必须将他们的客户ID写入cookie,(B)可以读取,然后(B)可以从Web服务请求数据,并预先填充表单.

这提出了两个问题:

  1. 网站(B)可以阅读网站(A)的cookie吗?

  2. 如果是这样,为了防止某人编辑cookie并在表单中看到其他人的数据,我需要做一些事情,比如加密(A)上的cookie,然后在(B)中解密 - 这条线上的任何建议?

我无法将现有登录更改为OAuth或其他内容,因为Web服务被其他几个站点使用,因此无法更改.

Chr*_*tal 22

不可以.网站B无法从网站A读取cookie.

最简单的解决方法是将登录/凭证信息从网站A传递到网站B,并让网站B设置单独的cookie.例如,登录到网站A后,您可以使用加密的查询字符串快速将其重定向到网站B. 然后,网站B可以读取信息,设置自己的cookie,并将用户重定向回站点A.

这很麻烦,但可能.

  • 你好 。我在 Instagram 上看到了 Facebook Cookie。似乎他们可以通过不同的域共享 cookie? (3认同)

Ted*_*ham 21

你提到同一家公司拥有这两个网站.如您所料,如果网站具有相同的域名,如www.mycompany.com和store.mycompany.com,那么他们可以共享Cookie.HTTP响应头看起来像这样:

Set-Cookie: user_id=1295214458; Path=/; Domain=.mycompany.com
Run Code Online (Sandbox Code Playgroud)

由于客户端可以直接访问此数据,因此您还应该包含签名,以便检测到篡改.通常整个事情都被加密并签名为"令牌",并将其设置为cookie.但从技术上讲,只需签名即可.

  • 不使用此处描述的 Set-Cookie 标头。他们必须共享顶级域名。 (2认同)

Ale*_*der 9

如果在您的情况下,您的所有用户都使用支持HTML5的浏览器,您可以使用window.postMessage允许addEventListener在一侧和另一侧的方法postMessage.这是一篇很好的文章/示例:https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage.

然后步骤很简单:

  1. 添加到网站A到网站B的隐藏iframe
  2. 使用window.postMessage将B的cookie发送给A.
  3. 将收到的cookie存储在A的cookie中