zoukankan      html  css  js  c++  java
  • 关于cookie的一些事

    关于cookie的一些事
    转自:http://blog.csdn.net/yunnysunny/article/details/7748106

    cookie是实现web中用户状态维护的基础。我们常见的session也是在客户端浏览器中保存一个cookie信息,里面含sessionid数据,而在服务器端有一段与此sessionid关联的数据,这段数据可以存在服务器硬盘上,也可以序列化后存储在服务器的内存中,如果自己实现session过程的话,甚至可以存储在数据库或者nosql中。在做session验证的时候,正式用此sessionid去查找服务器上的相应信息。

    cookie的属性

    在理解cookie之前,先得介绍一下它的几个属性。

    属性

    介绍

    name

    cookie的名字

    value 

    cookie的取值

    expires 

    过期时间,如果这个属性不指定的话,就是“session cookie”,也就是这个session在关闭浏览器后会被删除

    path 

    cookie的作用域,子文件夹下的网页可以访问父文件夹下的网页生成的cookie,但是反过来却不能。例如在/路径下生成了cookie_a,在/sub路径下生成了cookie_b,则/路径下只能读取cookie_a,而/sub路径下可以读取cookie_a和cookie_b。注意,如果不设置这个属性的话,默认使用的是当前的url的相对路径,例如在url http://www.a.com/some/page.php中设置cookie时没有指定path路径,则它的path属性为/some。一般我们设置cookie,就是让网站中所有其他的网页都能读取到的,所以应该将其设置为'/'。

    domain 

    cookie的所属域名,默认是全域名,例如www.somesite.com。当然也可以自己指定根域名,即.somesite.com(注意不是somesite.com,前面加一个点才是正确的),这样的话如果当前网站旗下有子域名网站的话,例如a.somesite.com b.somesite.com之类的子域名,那么在子域名所在网站中也能读取这个cookie。

    secure 

    这个属性是针对https来说的,如果设定其为true的话,那么只有在请求当前网站的https的地址的时候,才能读取出来。

    httponly

    这个属性设置js对于当前cookie的读取权限,如果为true,则js无法读取修改当前cookie

     

    cookie使用的注意事项:

    1.cookie的value内容中是无法使用特殊字符和中文的。不支持的特殊字符有空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号等(以上符号是cookie的 version 0 版本的情况,不同服务器支持的情况不同,有些特殊符号在支持version 1版本的服务器上是支持的),如果使用这些符号,cookie内容就会被截断,服务器会丢弃特殊符号和特殊符号之后的内容。所以在使用的时候要对其进行转义,js中可以使用escape和unescape;jsp中可以使用URLEncode和URLDecode(这两个函数可以自行设置编码);php中使用urlencode和urldecode(这两个函数内部使用gb2312进行中文转化)。如果遇到用js设置cookie,在后台读取的情况,js端可以用encodeURIComponent进行转码(这个函数使用utf-8进行中文转化)。

    2.在服务器端的对网页A设置了cookie,如果使用浏览器回退功能,回退到的页面B上,是读取不到刚才设置的cookie的,这种情况下必须手动刷新浏览器才能得到A页面设置的cookie。在某些服务器上即使使用js跳转到B页面也读取不到cookie,而且这种情况在php的服务器上出现,所以对于设置cookie后的操作最好采用服务器端语言进行浏览器跳转,比如php中的header函数。

    下面有图有真相
    1)来自firebug中的cookies

    2) 来自google浏览器的cookies ,和firefox大同小异了

    说明: 服务器端 session存在在 /tmp/ 中,其 存储值是经过序列化的,如下:
    [root@elastix82 tmp]# ls sess_*
    sess_555  sess_bhgup7d2lepdmh599klide9ul5  sess_hcqsd43ar55q8em2mmae513vv4
    [root@elastix82 tmp]#
    [root@elastix82 tmp]# cat sess_hcqsd43ar55q8em2mmae513vv4
    elastix_user|s:5:"admin";elastix_pass|s:32:"21232f297a57a5a743894a0e4a801fc3";menu|s:8:"calendar";dashboard|a:5:{s:22:"Applet_SystemResources";b:1;s:22:"Applet_ProcessesStatus";b:1;s:17:"Applet_HardDrives";b:1;s:25:"Applet_PerformanceGraphic";b:1;s:11:"Applet_News";b:1;}[root@elastix82 tmp]#
    [root@elastix82 tmp]#

  • 相关阅读:
    【软工4】:软件工程和文档
    ER模型图工具:PowerDesigner
    【软工3】:软件工程视频知识总结
    【软工2】:软件开发阶段
    【软工1】:软件计划及软件需求
    【机房收费系统 5】:验收总结(思想)
    【机房收费系统 4】:VB获取标准北京时间,免除时间误差
    网络经济与企业管理(一)
    【机房收费系统 3】:文本框输入数字、小数点、退格键
    .NET Framework
  • 原文地址:https://www.cnblogs.com/voiphudong/p/3290654.html
Copyright © 2011-2022 走看看