0

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

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

这是我设置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 上(据我所知,我不知道它们是否可以如此轻松地在站点之间传输,它们存在于用户计算机上),或者我是否只是设置错误。任何帮助将不胜感激!谢谢。

4

4 回答 4

1

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

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

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

于 2012-08-13T20:03:34.100 回答
1

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

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

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

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

于 2012-08-13T20:05:41.343 回答
0

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

这个问题可能有一些用处: Cross domain iframe content load detection

站点 B上,您可以有一个指向站点 A上的页面的 Iframe,该页面反过来加载指向站点 B上的页面的 Iframe 。如果指向站点 A的 iframe没有 cookie,它可以将该信息传递给站点 B的 iframe (可能通过加载不同的页面),加载时可以调用parent.parent.cookieNotSet()(或者您决定调用该函数的任何内容)以便站点 B将重定向到站点 A

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

于 2012-08-13T20:11:28.147 回答
0

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

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

于 2012-08-13T20:16:40.077 回答