使用javascript

时间:2018-05-16 02:04:00

标签: javascript cookies samesite

我正在尝试使用我网站上的javascript设置SameSite属性。代码是

<script type="text/javascript">

    document.cookie = "AC-C=ac-c;expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;HttpOnly;SameSite=Lax";
  </script>

正在设置cookie,但未设置SameSite属性。知道我在哪里错过了吗?

由于

3 个答案:

答案 0 :(得分:3)

这是一个属性,只能由服务器(如HttpOnly)在发送给浏览器的响应cookie中设置。如果您真的考虑其目的(通过强制浏览器仅针对相同的原始请求发送它来阻止CSRF),那么允许客户端代码设置它是没有意义的。

  

SameSite cookie让服务器要求不应发送cookie   使用跨站点请求,这有点防止跨站点   请求伪造攻击(CSRF)。 SameSite cookie仍然存在   实验性的,尚未得到所有浏览器的支持。

Reference 1

Reference 2

Reference 3

答案 1 :(得分:1)

您无法通过JavaScript API document.cookie设置HttpOnly标志。只能通过服务器响应中的cookie标头设置标志HttpOnly。参见https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies Cookies created via JavaScript cannot include the HttpOnly flag.

您写了The cookie is being set but the SameSite attribute is not being set,但我认为这不是事实。通过JS使用HttpOnly属性设置的Cookie会被拒绝,或者可能是某些浏览器对其设置了,但是忽略了HttpOnly标志-因此最终您的Cookie不仅是HTTP。

答案 2 :(得分:0)

您的问题不是SameSite,而是HttpOnlyHttpOnlySameSite是2个独立的事物,如果您删除HttpOnly将会起作用……并且cookie会用SameSite设置。

<script>
    document.cookie = "AC-C=ac-c;expires=Fri, 31 Dec 9999 23:59:59 GMT;path=/;SameSite=Lax";
    alert( document.cookie );
</script>