javaScript 之 cookie

作者: Miracletjf | 来源:发表于2018-07-01 21:20 被阅读5次

    cookie 概述

    cookie是服务器保存在浏览器端的一小段文本信息,每个cookie的大小一般不超过4KB。服务器给浏览器设置了cookie以后,浏览器没错向服务器发送请求时,就会附上cookie。每一个cookie都有对应的域名浏览器
    cookie是提供给HTTP协议使用的,可以通过HTTP协议传送。

    cookie 内容

    cookie 一般包括一下内容

    • cookie的名字
    • cookie的值
    • 到期时间
    • 所属域名 (默认当前域名)
    • 生效的路径 (默认当前网址)

    cookie 作用

    一般的cookie的用途有:

    • 对话: 保存用户登录状态,购物车信息等
    • 个性化:保存用户的偏好设置,例如:字体大小,配色等
    • 追踪:记录和分析用户的行为

    生成 cookie

    服务器生成cookie是通过设置HTTP请求头的Set-Cookie来设置的。Set-Cookie可以有多个。除了可以设置Cookie的值,还可以设置附加的Cookie的属性,一个Set-Cookie字段,可以包括多个属性,没有次序要求。

    附加的属性有以下几点:

    • Expires=<date> (UTC格式的日期)
    • Max-Age=<non-zero-digit> (最大失效时间,定义自设置cookie开始后失效的秒数)
    • Domain=<domain-value> (指定域名,默认指当前的一级域名)
    • Path=<path-value> (指定路径)
    • Secure (一个带有安全属性的cookie,只有在请求使用HTTPSSSL协议时,才发送到服务器。)
    • HttpOnly (禁止JavaScript访问cookie,可以防范XSS跨站脚本攻击)

    Set-Cookie 语法

    Set-Cookie: <cookie-name>=<cookie-value> 
    Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>
    Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit>
    Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>
    Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value>
    Set-Cookie: <cookie-name>=<cookie-value>; Secure
    Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly
    

    node.js 设置示例

    response.setHeader('Set-Cookie',[`email=${user['email']}`,`Max-Age=${60*60*24*7}`]);
    
    

    发送 cookie

    在服务器给浏览器设置好cookie后,浏览器访问服务器都会带上相应的cookie(满足限制条件的前提下)。
    服务器根据浏览器发送的cookie获取用户数据,并返回给用户,实现记住用户的状态等功能。

    浏览器 访问

    浏览器可以通过document.cookie访问当前域名下的cookie,也可以通过这个属性设置cookie。如果服务器设置了HttpOnly,那么就无法使用javascript来操作cookiel。

    总结

    以上就是对在下对cookie的简单的理解,要想深入的了解还是需要动手操作的。本文参考来一些网上的开源文章(阮老师的CookieMDN的开源文档)。
    文中有认识不正确的地方,欢迎指正(可以发送邮件到本人邮箱『1398988546@qq.com』),转载请注明文章来源。

    相关文章

      网友评论

        本文标题:javaScript 之 cookie

        本文链接:https://www.haomeiwen.com/subject/osphuftx.html