• 大白话理解cookie


    Cookie由来

    HTTP协议是一个无状态的协议,服务器无法区分出两次请求是否发送自同一服务器。

    需要通过会话控制来解决这个问题,会话控制主要有两种方式Cookie和Session。

    Cookie是什么

    Cookie就是一个头,Cookie由服务器创建,服务器以响应头的形式发送给客户端,

    客户端收到Cookie以后,会将其自动保存,在下次向服务器发送请求时会自动将Cookie以请求的形式发

    服务器收到以后就可以检查请求头中的Cookie并且可以根据Cookie中的信息来识别出不同的用户。

     Cookie机制

    1、客户端发送一个请求到服务器
    2、服务器返回响应头到客户端,其中包含Set-Cookie的头部
    3、客户端保存cookie,之后向服务器再次发送请求时,请求头中包含一个Cookie的字段
    4、服务器检查请求头中的Cookie,根据Cookie中的信息来识别,返回对应用户的响应数据

    简言之,

    服务端通过 Set-Cookie 响应头来向客户端设置 Cookie。 

    客户端通过 Cookie 请求头向服务端发送之前存储的 Cookie 数据。

    Cookie属性

    属性 解释
    name=value 键值对,设置要保存的 Key-Value
    expires 过期时间,在设置的某个时间点后该 Cookie 就会失效。注:expires 时间要转成GMT形式,即 toGMTString();
    domain 域名,指发出 HTTP 请求时,哪些域名要附带这个 Cookie。
    path 路径,指该 Cookie 是在当前的哪个路径下生成的,如PATH属性是/,那么请求/docs路径也会包含该 Cookie。
    secure

    表示cookie发送到http或https请求。

    值为0或1, 默认值为 0,cookei在http和https连接上都有效。 值为1,则cookie只在https连接上有效。

    httponly

    设置HttpOnly属性,那么通过js脚本将无法读取到cookie信息(仅出现在请求头),能有效的防止XSS攻击。

    此时若想修改Cookie ,只能通过服务器端修改,即document.cookie

    凡是httpOnly类型的cookie,其 HTTP 一列都会打上√


    操作Cookie

    具体操作:设置、读取、删除cookie

    1. 创建document.cookie=‘key=value; key1=value2’
    2. 读取var x = document.cookie
    3. 修改(进行覆盖)document.cookie=‘newkey=newvalue; newkey1=newvalue2’
    4. 删除(设置过期时间expires )document.cookie = "key=value’; expires=Thu, 01 Jan 1970 00:00:00 GMT";
    function setCookie(name, value,days) {
        var exp = new Date();
     //setTime() 方法以毫秒设置,向 1970/01/01 添加毫秒,并显示新的日期和时间。
        exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000);
    //toGMTString格林威治时间 (GMT) 把 Date 对象转换为字符串,并返回结果。
        document.cookie = name + "=" + value + ";expires=" + exp.toGMTString();
      }
  • 相关阅读:
    /proc/interrupts 和 /proc/stat 查看中断的情况
    publish and submit
    camera shading比例
    高负载linux调优
    linux网络socket 接口转
    深入分析linux调度机制
    大型网站架构之分布式消息队列
    Linux下高并发socket最大连接数所受的各种限制(详解)
    Linux服务器高并发实践经历
    oracle: 分割字符串,或者查找字段里面的关键字(关键字1,关键字2,关键字3)
  • 原文地址:https://www.cnblogs.com/renzm0318/p/11073851.html
Copyright © 2020-2023  润新知