博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cookie和web Storage
阅读量:6496 次
发布时间:2019-06-24

本文共 2266 字,大约阅读时间需要 7 分钟。

朋友去面试了,回来问我一般页面间传参用什么方法,我说我一般用是三种1、QueryString 2、cookies 3、webStorage。

QueryString很简单,就是在URL后面拼接参数,但缺点是传的值会显示在浏览器的地址栏中且不能传递对象,只适用于传递简单的且安全性要求不高的整数值。今天呢主要对比一下cookies和webStorage。

一、cookie的实现方法cookies是存储在用户本地终端上的数据,cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下,而且还可以限制失效时间。//写cookie    function writeCookie(name, value, hours, path) {        var expire = "";        if (hours !== null) {            expire = new Date((new Date()).getTime() + hours * 3600000);            expire = "; expires=" + expire.toGMTString();        }        path = path ? "; path=" + path : "";        document.cookie = name + "=" + encodeURIComponent(value) + expire + path;    };
//读取cookie    tools.readCookie = function (name) {        var cookieValue = "";        var search = name + "=";        if (document.cookie.length > 0) {            offset = document.cookie.indexOf(search);            if (offset != -1) {                offset += search.length;                end = document.cookie.indexOf(";", offset);                if (end == -1) end = document.cookie.length;                cookieValue = decodeURIComponent(document.cookie.substring(offset, end));            }        }        return cookieValue;    };

二、web Storage

html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。
注:storage只能存储字符串的数据,对于JS中常用的数组或对象却不能直接存储。
两者的实现方法相同。

1、.setItem( key, value)存储value,将value存储到key字段:

sessionStorage.setItem("key", "test");localStorage.setItem("site", "segmentFault");

2、.getItem(key)获取value,获取指定key本地存储的值

var value = sessionStorage.getItem("key");     var site = localStorage.getItem("site");

3、.removeItem(key)删除key,删除指定key本地存储的值

sessionStorage.removeItem("key");     localStorage.removeItem("site");

4、.clear()清除所有的key/value

sessionStorage.clear();localStorage.clear();

上面说了一堆的实现方法,现在可以说说它们的区别了。

共同点:
它们都是保存在浏览器端,且同源的。
区别:
1、cookies
(1)ookie数据始终在同源的http请求中携带,即cookie在浏览器和服务器间来回传递;
(2)cookie数据路径(path)的概念,可以限制cookie只属于某个路径下。
(3)存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据。
(4)cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
(5)cookie也是在所有同源窗口中都是共享的。

Web Storage不需要通过浏览器的请求将数据传给服务器,因此相比cookie来说能够存储更多的数据,大概5M左右。

2、LocalStorage
(1)localStorage 在所有同源窗口中都是共享的。
(2)始终有效,窗口或浏览器关闭也一直保存,除非手动删除,因此用作持久数据。
3、sessionStorage
(1)保存用户临时会话数据,一旦关闭浏览器,所有数据都会消失。
(2)sessionStorage不在不同浏览器窗口中共享

转载地址:http://bmuyo.baihongyu.com/

你可能感兴趣的文章
指向方法之委托(一)
查看>>
2013 Multi-University Training Contest 3 部分解题报告
查看>>
Linux 网桥配置命令:brctl
查看>>
jQuery中异步操作对象Deferred
查看>>
源码解析Android中View的measure量算过程
查看>>
MVC设计模式
查看>>
在团队项目遇到的问题及解决方法。
查看>>
springcloud demo---config-client
查看>>
Django设置联合唯一约束 -- migrate时报错处理
查看>>
Java LeetCode 1.Two Sum
查看>>
前端面试题:css相关面试题
查看>>
shell命令的高级使用之---选择性copy
查看>>
最长回文子序列-----动态规划
查看>>
Vue国际化实现
查看>>
设计模式:单例模式
查看>>
FLASH位宽为8、16、32时,CPU与外设之间地址线的连接方法
查看>>
双网卡一般情况不能有两个网关 (转)
查看>>
xshell 远程连接Linux
查看>>
【IOS】IOS8 TabBarItem设置自定义图片问题
查看>>
Linux计划任务及压缩归档(week2_day1)--技术流ken
查看>>