我正在尝试使用我网站上的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属性。知道我在哪里错过了吗?
由于
答案 0 :(得分:3)
这是一个属性,只能由服务器(如HttpOnly
)在发送给浏览器的响应cookie中设置。如果您真的考虑其目的(通过强制浏览器仅针对相同的原始请求发送它来阻止CSRF),那么允许客户端代码设置它是没有意义的。
SameSite cookie让服务器要求不应发送cookie 使用跨站点请求,这有点防止跨站点 请求伪造攻击(CSRF)。 SameSite cookie仍然存在 实验性的,尚未得到所有浏览器的支持。
答案 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
,而是HttpOnly
。 HttpOnly
和SameSite
是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>