浅谈cookie

浅谈cookie

这一阵在做一个小的项目,叫做西邮成绩,因为在代码设计中牵扯到了跳转页面仍需保存用户信息的问题,查询后知道了这是一个叫做cookie的玩意,所以我在网上找了一些资料来分享一下我知道的cookie那些事。

1.什么是cookie?

cookie是存储在用户本地终端上的数据,某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据。cookie最大保存为4096字节的数据。cookie的失效方式有两种:第一是时间过期,第二是会话窗口关闭。

cookie的存储形式

2.为什么要用cookie?

就拿我做的这个小项目而言吧,第一个页面是登录页面,用户输入用户名和学号进行登录操作,登录成功后显示成绩页面,但是还需利用用户输入的信息和登录接口返回的session来向成绩接口传送信息。因为这是两个html和两个js文件,所以直接传送数据是不可能的,所以我就利用了cookie来传递数据,这是利用了cookie的失效性质2来进行的,即就是当会话窗口关闭时,向浏览器发送的cookie才会失效。当然了,cookie还有更强大的功能,我只是以一个初学者的角度来看待这个玩意。

3.cookie的形式

cookie是以键值对的形式保存的,通常有这么三类
  • 用户名
  • 密码
  • 日期
当用户第一次访问页面时,浏览器会将用户名,密码,日期存储在cookie中,下次登录时用户名等信息就可以从cookie中取出,我在设计时有一个记住密码的功能,这就是那个原理。当然cookie里还保存着一些浏览过的网页啊,停留的时间啊等很多信息,但是我们在进行客户端开发时通常只用到了这几个信息。

4.对cookie的操作

  • 创建cookie
  • 获取cookie
  • 删除cookie
创建无疑就是给cookie存储什么信息,当然了需要一些传递参数,变量名,值,以及存储时间。
document.cookie = "username=" + user;
document.cookie = "password=" + password;
js原生的创建方法就是document.cookie = “key” + value;key为所创建的名称,value指存储的真实值。js里还有一种对cookie操作的方法——jquery。代码 形式也很简单,这里就不再列出。不管是jquery还是js原生,操作都很简单,但是相比之下原生还是比较好的,在开发时能用原生还是用吧,因为太多的插件会降低开发效率。
接着就是从cookie中获取用户信息 了,代码如下:
function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg))
       return unescape(arr[2]);
    else
       return null;
}
很简单的只需要传递需要取出value的key值就可以了,比如是
var user = getCookie("username");
这样username的值就会保存在user中了,我们就可以在另一页面中对上一页面的信息进行处理了。
清楚cookie的方法就是给key里面保存一个空值就好了,对于彻底删除cookie,代码如下:
function delCookie(key,value){
   var date = new Date();
   date.setTime(date.getTime() - 10000);
   var test = date.toGMTString();
   document.cookie = key + "=" + value + "; expire=" + test + "; path=/";
}
即通过时间来设置cookie属性。

5.cookie的弊端

cookie的功能很强大,但是存在的弊端也不少,比如浏览器cookie大小限制,比如有些状态不能保存在客户端,但是最大的问题是暴露用户信息。如果cookie被人拦截了就可以获取所有session信息,造成信息泄露,失去安全性。

6.cookie与session

cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。cookie之前已较详细说明过了,现在说说session。
session我只在传递变量,创建方面谈谈。如果要在诸多Web页间传递一个变量,那么用Session变量要比通过QueryString传递变量可使问题简化。session变量不需要事前说明,创建Session变量有很大的随意性,可随时调用,不需要开发者做精确地处理。当然这也就会造成代码变得随意,不好维护。当然session也有很多优点和缺点,这里就不再说了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值