发表于: 2017-02-14 19:43:19

1 1348


域名,COOKIE是什么?有什么用处?COOKIE 和SESSION的区别?COOKIE的有效期

背景介绍

   IP地址是Internet主机作为路由寻址用的数字体标识,人不容易记忆。因而产生了域名这一种字符型标识。cookie中文名称为“小型文本文件”,某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。定义于RFC2109。是网景公司的前雇员卢·蒙特利在1993年3月的发明。

知识剖析

   域名在因特网上用来代替IP地址,因为IP地址没有实际含义,人们不容易记住,所以用有含义的英文字母来代替。在网络上,专门有DNS(域名服务器)来进行域名与IP的相互转换,人们输入域名,在DNS上转换为IP,才能找到相应的服务器,打开相应的网页。

   cookie的用途

  因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。 所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。在刚才的购物场景中,当用户选购了第一项商品,服务器在向用户发送网页的同时,还发送了一段Cookie,记录着那项商品的信息。当用户访问另一个页面,浏览器会把Cookie发送给服务器,于是服务器知道他之前选购了什么。用户继续选购饮料,服务器就在原来那段Cookie里追加新的商品信息。结帐时,服务器读取发送来的Cookie就行了。

常见问题

  COOKIE 和SESSION的区别

解决方案

session的作用和cookie差不多,也是用来解决Http协议不能维持状态的问题。

1,session 在服务器端,cookie 在客户端(浏览器)

2,session 默认被存在在服务器的一个文件里(不是内存)

3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)

编码实战

  在使用JavaScript存取 cookie 时,必须要使用Document对象的 cookie 属性;一行代码介绍如何创建和修改一个 cookie :

     document.cookie  = 'username=Darren'

  以上代码中'username'表示 cookie 名称,'Darren'表示这个名称对应的值。假设 cookie 名称并不存在,那么就是创建一个新的 cookie;如果存在就是修改了这个 cookie 名称对应的值。如果要多次创建 cookie ,重复使用这个方法即可。

文章中常常出现的 cookie 的生命周期也就是有效期和失效期,即 cookie 的存在时间。在默认的情况下,cookie 会在浏览器关闭的时候自动清除,但是我们可以通过expires来设置 cookie 的有效期。语法如下:

     document.cookie = "name=value;expires=date"

 上面代码中的date值为GMT(格林威治时间)格式的日期型字符串,生成方式如下:

     var _date = new Date();

     _date.setDate(_date.getDate()+30);

     _date.toGMTString();

 上面三行代码分解为几步来看:

  通过new生成一个Date的实例,得到当前的时间;

  getDate()方法得到当前本地月份中的某一天,接着加上30就是我希望这个cookie能过在本地保存30天;

  接着通过setDate()方法来设置时间;

  最后 用toGMTString()方法把Date对象转换为字符串,并返回结果

扩展思考

  dns是什么?



返回列表 返回列表
评论

    分享到