【问题标题】:Check if the client accepts cookie in javascript?检查客户端是否接受 javascript 中的 cookie?
【发布时间】:2025-12-13 16:20:03
【问题描述】:

有没有办法检查客户端是否只接受带有 javascript 代码的 cookie?

【问题讨论】:

  • 当然,尝试设置一个并阅读它。

标签: javascript cookies


【解决方案1】:

这应该可以解决问题:

function areCookiesEnabled() {
  document.cookie = "__verify=1";
  var supportsCookies = document.cookie.length >= 1 && 
                        document.cookie.indexOf("__verify=1") !== -1;
  var thePast = new Date(1976, 8, 16);
  document.cookie = "__verify=1;expires=" + thePast.toUTCString();
  return supportsCookies;
}

这会设置一个基于会话过期的 cookie,检查它是否存在,然后在过去再次设置它,将其删除。

【讨论】:

  • 为什么是document.cookie.length > 1 而不是document.cookie.length >= 1
  • 它不适用于 ie。对于 chrome 和 firefox,它在 cookie 被禁用时返回 false,但在 ie 的情况下,虽然 cookie 被禁用,但它返回 true,请注意我使用的是 IE11。请帮忙!!!!
【解决方案2】:

cookieEnabled 属性返回一个布尔值,指定浏览器中是否启用 cookie

<script>
if (navigator.cookieEnabled) {
    // Cookies are enabled
}
else {
    // Cookies are disabled
}
</script>

【讨论】:

  • @Stephen 在 IE10 中模拟时,它似乎至少在 IE7 中有效。你有任何来源吗?
  • 从较新的 IE 版本中模拟较旧的 IE 版本,在我的经验中不是很可靠。这是温和的说法。此外,浏览器确实有在“被问及”时谎报其功能的历史。实际上测试一个功能通常是个好主意。
  • navigator.cookieEnabled 对于 IE11 总是返回 true ,有没有其他方法可以做到这一点?
【解决方案3】:

对于那些使用jQuery Cookie 来管理和创建 cookie 的人来说,这里有一个简单的方法来检查 cookie,并在检查 cookie 后,根据启用或禁用的 cookie 运行一个函数。

//Create Session Cookie
$.cookie('test-for-cookie', '1');

//Test for Session Cookie
var yesCookie = $.cookie('test-for-cookie');
if  (yesCookie == 1) { 
    //Run function if cookies are enabled.
} else{
    //If cookies are not enabled run this function.
} 

jsFiddle of working example.

【讨论】: