【发布时间】:2016-09-11 02:35:12
【问题描述】:
我尝试使用document.cookie = "tagname = test; secure" 设置一个cookie,但这并没有设置安全标志。我设置错了吗?您只能从服务器响应中设置它吗?我还想知道,因为我很难找到它的使用示例,它可能不常用?
非常感谢!
【问题讨论】:
标签: javascript security cookies get
我尝试使用document.cookie = "tagname = test; secure" 设置一个cookie,但这并没有设置安全标志。我设置错了吗?您只能从服务器响应中设置它吗?我还想知道,因为我很难找到它的使用示例,它可能不常用?
非常感谢!
【问题讨论】:
标签: javascript security cookies get
因为标志被称为secure,而不是安全:
document.cookie = "tagname = test;secure";
【讨论】:
document.cookie = "tagname = test;secure"; 时,不会添加任何 cookie,但是当我输入 document.cookie = "tagname = test"; 时,它会被添加。这是在 Chrome 控制台中输入内容的限制吗?感谢您的回复。
TL:DR
document.cookie = "tagname = test;secure";
您必须使用 HTTPS 来设置安全属性
正常的(或正式的,也许)名称是属性。因为flag指的是其他东西。
更多信息
安全 - Cookie 将仅在 HTTPS 传输中发送。
HttpOnly- 不允许脚本访问 cookie。您可以同时设置 Secure 和 HttpOnly。
域 - 指定 cookie 将被发送到的主机。
路径 - 创建范围,只有当路径匹配时才会发送 cookie。
Expires - 表示 cookie 的最长生命周期。
更多细节和实际用法。检查Testing_for_cookies_attributes_(OTG-SESS-002)
更新 以下内容将于 2016 年 6 月 2 日到期。
Cookie 标志是前缀。目前,它们在RFC draft 中被描述为RFC6265 的更新
这些标志与“安全”属性一起使用。
__Secure-
破折号是前缀的一部分。这个标志告诉浏览器,cookie 应该只包含在 'https' 中。
__Host-
带有此标志的 cookie
不能有'domain'属性,它只会发送到设置它的主机。
必须有一个“路径”属性,即设置为“/”,因为它会在来自主机的每个请求中发送到主机。
【讨论】:
document.cookie = "tagname = test;secure"; 但document.cookie 返回tagname=test,https,在当前版本的 Chromium 和 Firefox 中测试。 UPD,哦,我在 Devtools 的 cookie 查看器中找到了 secure 标志。
这个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 });
【讨论】: