【问题标题】:Is using the jQuery Cookie plugin a valid way of testing to see if cookies are enabled?使用 jQuery Cookie 插件是否是测试 cookie 是否启用的有效方法?
【发布时间】:2011-01-03 00:53:25
【问题描述】:

我有一个网站,我们要求用户在登录该网站之前启用 JavaScript 和 cookie。 (JS 部分已经完成并且运行良好。)目前,我们一直在设置一个 cookie,然后将用户重定向到另一个页面(在 PHP 中)。这工作正常,但现在我们有很多人已经为我们重定向到的页面添加了书签,当然没有设置 cookie,因此不允许他们登录。

所以我正在尝试寻找另一种解决方案来检查 cookie,我正在考虑使用 jQuery Cookie plugin。我想知道它是否在所有浏览器中都兼容(当然是启用 JS 时)?

【问题讨论】:

  • 我没有在所有浏览器中测试过它,但是拥有 jQuery 和 jQuery 插件的全部意义在于跨浏览器兼容。此外,“所有浏览器”有点宽泛。我认为 IE6 和 Opera 处于边缘。
  • 不幸的是,对于这个客户,我需要 IE6。歌剧我想要,但我想我可以没有。

标签: jquery cookies jquery-cookie


【解决方案1】:

感谢 Shawn your answer,但不幸的是,由于浏览器并不总是发送引荐来源网址,它不够可靠,无法每次都使用它。因为如果没有设置,那么你就会陷入循环。

我想到的另一种解决方案是重定向到一个完全独立的页面,该页面本身会检查是否启用了 cookie(通过重定向到自身)。如果启用了 cookie,它将重定向回原始页面。如果不是,那么它将重定向到有关问题的页面。我认为这应该可行,但我不确定。

最后,我在 IE 6、7 和 8、Safari 4、Google Chrome 4、Firefox 3.5、Opera 10.2 以及一些不同的配置上尝试了 jQuery Cooke 插件,并且在所有这些配置中都可以使用。这是我正在使用的代码:

$.cookie('test_cookie', 'cookie_value', { path: '/' });
if ($.cookie('test_cookie') == 'cookie_value') {
    // cookie worked, set/enable appropriate things
}

它并不完美,但我认为它适用于 95% 的情况。否则,它将失败并且不允许他们做任何事情。

【讨论】:

【解决方案2】:

您可以检查页面的引用者,如果它不是您的主页,您可以将它们重定向到那里。如果引用者是您的主页并且没有设置 cookie,您就会知道他们没有启用 cookie。

【讨论】:

  • 我试过了,但是 $_SERVER 数组中没有设置引用者。有任何想法吗? 302 和 307 我都试过了。
  • 试试@$HTTP_REFERER 或getenv("HTTP_REFERER")。
  • 我居然发现了那个 header("Location:...");最终不会设置引荐来源网址(至少在 Safari 中),所以我改用 效果很好。
【解决方案3】:

我喜欢这个 1 线性函数:

function cookiesEnabled() {
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
}

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 2011-01-15
    • 2020-12-07
    • 2012-03-15
    • 2012-02-26
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多