【问题标题】:How to set cookie secure flag using javascript如何使用 javascript 设置 cookie 安全标志
【发布时间】:2016-09-11 02:35:12
【问题描述】:

我尝试使用document.cookie = "tagname = test; secure" 设置一个cookie,但这并没有设置安全标志。我设置错了吗?您只能从服务器响应中设置它吗?我还想知道,因为我很难找到它的使用示例,它可能不常用?

非常感谢!

【问题讨论】:

    标签: javascript security cookies get


    【解决方案1】:

    因为标志被称为secure,而不是安全

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

    【讨论】:

    • 抱歉,这是我原帖中的错字。我已经纠正了它。使用 Chrome 控制台时,当我输入:document.cookie = "tagname = test;secure"; 时,不会添加任何 cookie,但是当我输入 document.cookie = "tagname = test"; 时,它会被添加。这是在 Chrome 控制台中输入内容的限制吗?感谢您的回复。
    • @BobtheMagicMoose 你是在 HTTPS 网站上尝试这个吗?它对我来说很好,但你必须在 HTTPS 网站上进行。
    【解决方案2】:

    TL:DR

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

    您必须使用 HTTPS 来设置安全属性

    正常的(或正式的,也许)名称是属性。因为flag指的是其他东西。

    更多信息

    Cookie 属性:

    安全 - Cookie 将仅在 HTTPS 传输中发送。

    HttpOnly- 不允许脚本访问 cookie。您可以同时设置 Secure 和 HttpOnly。

    域 - 指定 cookie 将被发送到的主机。

    路径 - 创建范围,只有当路径匹配时才会发送 cookie。

    Expires - 表示 cookie 的最长生命周期。

    更多细节和实际用法。检查Testing_for_cookies_attributes_(OTG-SESS-002)

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

    Cookie 标志

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

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

    __Secure-
    

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

    __Host-
    

    带有此标志的 cookie

    1. 不能有'domain'属性,它只会发送到设置它的主机。

    2. 必须有一个“路径”属性,即设置为“/”,因为它会在来自主机的每个请求中发送到主机。

    【讨论】:

    • 谢谢!问题是我试图在不使用 HTTPS 的情况下设置安全属性。
    • 我试过你的document.cookie = "tagname = test;secure";document.cookie 返回tagname=test,https,在当前版本的 Chromium 和 Firefox 中测试。 UPD,哦,我在 Devtools 的 cookie 查看器中找到了 secure 标志。
    • MDN 特别提到它是被禁止的。 developer.mozilla.org/en-US/docs/Web/HTTP/…
    【解决方案3】:

    这个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 });
    

    【讨论】:

    • expires中的7表示7天
    猜你喜欢
    • 2017-09-11
    • 2018-02-03
    • 1970-01-01
    • 2012-10-13
    • 2010-11-29
    • 2022-01-07
    • 2018-04-28
    • 2011-11-25
    • 2020-01-11
    相关资源
    最近更新 更多