【问题标题】:Cookies Between Sites站点之间的 Cookie
【发布时间】:2012-08-14 04:20:44
【问题描述】:

我正在建立一个网站,其全部目的本质上是一个着陆页。当用户填写正确的表格时,此页面将创建一个 cookie。为了处理 cookie,我使用了 this jquery plugin.

我的问题是,我有一个单独的站点,只有在用户拥有第一个站点(登录页面)的 cookie 时才能查看该站点。到目前为止,在我的测试中,我一直遇到问题,因为我在登陆页面上设置的 cookie 没有出现在其他网站上。 登陆页面正在 localhost 上进行测试,但要求用户在查看之前拥有 cookie 的网站正在互联网上。

这是我设置 cookie 的方式:

$('#submit')[0].addEventListener("click", $.cookie("test-cookie", "test-value"));

然后,在另一个站点我有这样的东西来检查 cookie:

var cookie = $.cookie("test-cookie");
if (cookie != null && cookie != "") {
    console.log("TRUE");
} else {
    window.location = "http://www.thelandingpagesite.com";
}

现在,我不确定问题是否出在 cookie 上(据我所知,我不知道它们是否可以如此轻松地在站点之间传输,它们存在于用户计算机上),或者是否我只是设置错了。任何帮助将不胜感激!谢谢。

【问题讨论】:

标签: javascript jquery cookies


【解决方案1】:

据我所知,一个站点 (www.example.com) 无法从浏览器中检索另一个站点 (www.Second-example.com) 的 cookie。

如果允许这样做将是一个重大的安全漏洞,因为有人很容易窃取您的 cookie 并访问您的帐户和个人详细信息。

恐怕您将不得不使用 cookie 以外的其他机制。

您可以按照您在对另一个答案的评论中的建议存储他们的 IP。请注意,该局域网上的任何人都可以访问该页面...例如,如果学校的学生填写您的表格...整个学校都可以访问您尝试限制的页面。

【讨论】:

    【解决方案2】:

    Cookie 由用户的浏览器存储,但它们的存储是参考设置它们的网站。

    站点 A 无法为站点 B 设置 cookie。

    Cookie 用于(除其他外)存储偏好。允许任何任意站点为任何其他任意站点设置用户偏好会招致破坏行为。

    【讨论】:

    • 感谢您的快速回复!那么,我将如何让第二个页面只有在第一个站点上填写了表单的用户才能查看?我应该只存储 IP 并以某种方式在第二个站点上检查吗?
    • 站点 B 不能读取站点 A 的 cookie,否则 nastygansters.ru 会戳到 yourbankaccount.com。
    • @alexthebake — 生成一次性令牌,将其发送到站点 B,然后在查询字符串中使用该令牌将用户重定向到站点 B,让站点 B 识别该令牌,标记它(在其数据库)使用并设置cookie,然后重定向到内容。
    【解决方案3】:

    为特定域或一组子域设置 Cookie。它们可以跨多个子域读取,因此可以为域“.domain.com”设置一个 cookie,该 cookie 将与所有对“www.domain.com”、“landingpage.domain.com”的请求一起发送,等等

    如果最终您的登录页面和它们被发送到的页面位于同一个根域上,这是可能的。

    【讨论】:

      【解决方案4】:

      您的问题似乎不是对用户进行身份验证,您只是希望用户在访问站点 B 之前访问站点 A。

      这个问题可能有点用: Cross domain iframe content load detection

      Site B 上,您可以有一个指向 Site A 上的页面的 iframe,这反过来会加载指向 Site B 上的页面的 iframe强>。如果指向 Site A 的 iframe 没有 cookie,它可以将该信息传递给 Site B 的 iframe(可能通过加载不同的页面),当然后,loaded 可以调用 parent.parent.cookieNotSet()(或任何您决定调用该函数的函数),以便 Site B 重定向到 Site A

      我希望这是有道理的。这是一个很大的解决方法,但需要解决跨域问题。所有这些显然都需要在浏览器上启用 JavaScript,但现在有哪些浏览器没有启用 JavaScript?

      【讨论】:

        猜你喜欢
        • 2016-07-27
        • 2011-12-17
        • 2021-09-18
        • 2017-08-09
        • 1970-01-01
        • 2018-12-20
        • 2012-09-04
        • 2019-10-31
        • 2016-12-25
        相关资源
        最近更新 更多