cooki和session的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29412527/article/details/82963779

1、cookie和session的相关概念

http会话机制

  • 请求响应无状态
  • 实际是需要有状态的

cookie与session

通过cookie可以向客户端存储数据
多次设置cookie可以累加设置多个cookie键值对
document.cookie = ‘username=lisi’
document.cookie = ‘age=12’
document.cookie //username=lisi; age=12

cookie的格式

  • 基本格式:键值对,多个cookie之间使用分号和空格隔开
  • cookie的分类:会话cookie;持久cookie
  • 过期时间:expires可以设置cookie有效期
  • cookie是与域名和路径绑定的(在父路径中设置的cookie可以在子路径中获取,反过来不行)
    • 父:www.baidu.com/abc
    • 子:www.baidu.com/abc/a/b/c
  • 安全性
  • 大小限制:4k

两者区别

  • cookie存储在浏览器端
    • 安全性比较低,有可能被冒充
    • cookie数据存储量有限制4k
  • session存储在服务器端
    • 安全性比较高
    • 比较消耗服务器资源
  • cookie和session的关系:
    • session产生的id可以使用cookie存储
    • 如果客户端cookie被禁用了,那么可以通过url重写(在url中携带)的方式支持session
      (或者在表单中增加一个隐藏域存id,一般后端这样做)

url重写可以解决用户禁用cookie的情况下依然可以保持客户端和服务器的通信状态

2、原生js操作cookie

查看所有的cookie: document.cookie
设置cookie : document.cookie = “username=lisi”;

var date = new Date();
date.setDate(date.getDate()+1);
document.cookie = "abc=123; expires="+date.toGMTString()+"; path=/";

封装cookie

    function setCookie(obj){
        document.cookie = obj.key + "=" + obj.value + "; expires=" + obj.date + "; path=" + obj.path;
    }

    function getCookie(key){
        var cookie = document.cookie;
        var arr = cookie.split(";");
        for(var i = 0; i < arr.length ; i++){
            var kv = arr[i].split("=");
            if(kv[0] == key){
                return kv[1];
            }
        }
    }   
    
    
    setCookie({
        key: "ccc",
        value: 233,
        date: date,
        path: "/"
        });

3、jQuery插件操作cookie:jquery.cookie.js

https://github.com/carhartl/jquery-cookie

4、服务器session操作

session也是为了保存用户的状态,但是session比cookie安全,session是后端的技术,但是sesison可以依赖于cookie记录它的session id 。

<?php
//开启session
session_start();
?>

猜你喜欢

转载自blog.csdn.net/qq_29412527/article/details/82963779
今日推荐