• 客户端存储cookie


    1.cookie是一种早期的客户端存储机制,起初是针对服务器端脚本的设计使用的。

    尽管在客户端提供了非常繁琐的api 来操作cookie,但他们难用至极,而且只能

    存储少量的文本数据,任何以cookie形式存储的数据无论服务端是否需要,每一次http请求

    都会把这些数据传输到服务端。cookie目前任然被客户端程序员大量使用的一个重要原因是:

    所有新旧浏览器都支持它。但是,随着Web Storage 的普及,cookie最终会回到最初的状态:

    作为一种被服务端脚本使用的客户端存储机制。

    2.cookie的属性:有效期和作用域

     name/value,名/值对。有效期daysLive:cookie的有效期和整个浏览器进程而不是单个浏览器窗口

    的有效期一致。可以通过max-age属性设置cookie的有效期。

    作用域:cookie的作用域不是局限于浏览器的单个窗口中,而是在这个浏览器的进程;

    3.保存cookie

    cookie的属性值设置为一个字符串形式的值:name=value

    example:document.cookie = "version="+ encodeURLComponent(document.lastMNodified);

    4.设置cookie

     5.存储cookie

    function cookieStorage(maxage, path) {
    //获取一个存储全部cookie信息的对象
    var cookie = (function() {
    var cookie = {};
    var all = document.cookie;
    if (all == "") {
    return cookie;
    }
    var list = all.split(";");
    for (var i = 0; i < list.length; i++) {
    var cookie = list[i];
    var p = cookie.indexOf("=");
    var name = cookie.substring(0, p);
    var value = cookie.substring(p + 1);
    value = decodeURIComponent(value);
    cookie[name] = value;
    }
    console.log(cookie);
    }());

    //将所有的cookie的名字存储到一个数组中
    var keys = [];
    for(var key in cookie){
    keys.push(key);
    };
    //定义存储api公共属性和方法
    //存储属性的个数
    this.length = keys.length;
    //返回第n个cookie的名字,如果n越界则返回null
    this.key = function(n){
    if(n<0 || n>keys.length){
    return null;
    }
    return keys[n];
    };
    //返回指定名字的cookie的值,如果不存返回null
    this.getItem = function(name){
    return cookie[name] || null;
    };
    //存储cookie的值
    this.setItem = function(key,value){
    if(!(key in cookie)){
    keys.push(key);
    this.length++;
    }
    cookie[key] = value;
    var cookie = key + "=" + encodeURIComponent(value);
    //将cookie的属性也加入到该字符串中
    if(maxage) cookie += ";max-age=" + maxage;
    if(path) cookie = ";path=" + path;
    document.cookie = cookie;
    };
    //删除指定的cookie
    this.removeItem = function(key){
    if(!(key in cookie)) return;
    delete cookie[key];
    for(var i = 0;i<keys.length;i++){
    if(keys[i] === key){
    keys.splice(i,1);
    break;
    }
    }
    this.length--;
    document.cookie = key + "=; max-age=0";
    };
    this.clear = function(){
    for(var i = 0;i<keys.legnth;i++){
    document.cookie = keys[i] + "=; max-age=0";
    }
    cookie = {};
    keys = [];
    this.length = 0;
    }

    }

  • 相关阅读:
    Unity Shader中的multi_complie
    .NetCore HttpClient Proxy 设置全局代理
    Linux oracle其他用户使用sqlplus
    android第一天
    KindEditor插件之图片上传
    lucene最新版本3.3的基本功能用法
    KindEditor插件之代码高亮
    vue3 获取视频第一帧并且保存为图片
    一些问题
    createreactapp webpack4升级webpack5
  • 原文地址:https://www.cnblogs.com/zhengao/p/8184882.html
Copyright © 2020-2023  润新知