Cookie“CookieName”已被拒绝,因为已有 HTTP-Only cookie,但脚本尝试存储新的 cookie

Abu*_*ail 4 javascript cookies

 var CookieName = "TestCookie";
  document.cookie = "CookieName=Cheecker; path =/; httponly=false;samesite=None;secure=true;"
     alert(document.cookie);
  if (document.cookie.indexOf(CookieName) == -1) {
    console.log("Cookies are required to use shopping carts.");
  }

  if (document.cookie.indexOf(CookieName) != -1) {
    console.log(
      "Thank you for enabling Third-Party cookies we only using it for our shopping carts"
    );
  }
Run Code Online (Sandbox Code Playgroud)

我想检查用户浏览器中是否启用了第三方 cookie

jet*_*ter 8

这里有几个问题。我将回答您在标题中暗示的问题:为什么会收到“ Cookie "CookieName" has been rejected...”错误?

有两个原因,都可以在 Mozilla 的“使用 HTTP Cookies ”页面的“创建 Cookies”部分中确认:

第一:
HttpOnly 是一个标志,而不是一个变量。您已httponly=false;在 cookie 设置中调用。应该是这样HttpOnly;,顺便说一句,这同样适用Secure;。例子:

document.cookie = "CookieName=Cheecker; path =/; HttpOnly; samesite=None; Secure;"
Run Code Online (Sandbox Code Playgroud)

第二:
HttpOnly是一个将 cookie 限制为仅 HTTP 调用的设置。它们无法通过 JavaScript 访问...因此它们也无法通过 JavaScript 设置。来自 Mozilla 的页面:

Cookies created via JavaScript cannot include the HttpOnly flag.
Run Code Online (Sandbox Code Playgroud)

所以。我无法说明如何确定用户浏览器中是否设置了第三方 cookie,但您可以通过HttpOnly从 cookie 创建调用中删除该标志来解决错误。