如何使用javascript设置cookie安全标志

7eumitmz  于 2023-01-11  发布在  Java
关注(0)|答案(5)|浏览(112)

我试着用document.cookie = "tagname = test; secure"设置一个cookie,但是它没有设置安全标志。我设置错了吗?你只能从服务器响应设置它吗?我也想知道,因为我很难找到一个使用它的例子,它可能不是常用的?
非常感谢!

ars1skjm

ars1skjm1#

TL:DR

document.cookie = "tagname = test;secure";

必须使用HTTPS设置安全属性

标准的(或者正式的,也许)名字是属性.因为标志指的是其他的东西.

详细信息

Cookie属性:

安全- Cookie将仅以HTTPS传输方式发送。
HttpOnly-不允许脚本访问cookie。您可以同时设置安全和HttpOnly。
域-指定cookie将发送到的主机。
路径-创建作用域,仅当路径匹配时才发送cookie。
过期-指示cookie的最长生存期。
更多细节和实际应用。查看Testing_for_cookies_attributes_(OTG-SESS-002)

更新****以下内容将于2016年6月2日到期。

Cookie标志

Cookie标志是前缀,目前在RFC draft中描述为RFC6265的更新

这些标志与“secure”属性一起使用。

__Secure-

破折号是前缀的一部分。这个标志告诉浏览器,cookie应该只包含在'https'中。

__Host-

带有此标志的Cookie

1.不能具有“domain”属性,它将仅发送到设置它的主机。
1.必须具有“path”属性,该属性设置为“/”,因为它将在来自主机的每个请求中发送到主机。

polhcujo

polhcujo2#

因为该标志名为secure,而不是 security

document.cookie = "tagname = test;secure";
xwbd5t1u

xwbd5t1u3#

此cookie包易于使用@https://www.npmjs.com/package/js-cookie

//to set cookie use
 Cookies.set('name', 'value', { expires: 7, path: '' });

 //to read the cookie, use
 Cookies.get('name'); // => 'value'

 //to delete cookie this
 Cookies.remove('name')

  //to set secure cookie this
 Cookies.set('name', 'value', { secure: true });
v09wglhw

v09wglhw4#

尽管服务器以大写字母响应,并以空格分隔:

set-cookie: x = y; Secure

客户端javascript需要将secure小写,并删除;后面的空格,如下所示:

document.cookie = `x=y;secure`;

否则,它将毫无效果。

eqoofvh9

eqoofvh95#

以下是针对ExpressJs用户的示例:
设置安全Cookie

res.cookie("name", "value", { secure: true });

阅读此cookie

req.cookies["name"];

如果在cookie上设置了Secure属性,则只有当请求是通过HTTPS而不是通过HTTP发出时,浏览器才会将其包含在请求中。
最佳做法是对敏感cookie使用此属性,因为它将保护它们不会通过不安全的连接发送。

相关问题