zoukankan      html  css  js  c++  java
  • cookie、session的区别

    一.  cookie

    1.什么是cookie?

    Cookie 技术产生源于 HTTP 协议在互联网上的急速发展。随着互联网时代的策马奔腾,带宽等限制不存在了,人们需要更复杂的互联网交互活动,就必须同服务器保持活动状态(简称:保活)。

    Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息.

    2.Cookie时效性

    Cookie的默认时效为Session,也就是说浏览器关闭,Cookie会和session一起失效,但是Cookie的有效时间是可以设置的。

    Cookie有一个属性expires,设置其值为一个时间,那么当到达此时间后,此cookie失效。


    //创建cookie实例。 
    HttpCookie cookie = new HttpCookie("id","666"); 
    //设置cookie的过期时间,一小时后过期,自动清除文件 
    cookie.Expires = DateTime.Now.AddMonths(60);
    //将创建的cookie文件输入到浏览器端 
    Response.Cookies.Add(cookie);
    //读取cookie文件中存储的值 
    Response.Write(Request.Cookies["id"].Value);
    //cookie的销毁,给他设置一个时间,他就被销毁了
    cookie.Expires = DateTime.Now.AddMonths(-60); 

    3.执行流程:

    1)、首先,客户端会发送一个http请求到服务器端。

    2)、服务器端接受客户端请求后,发送一个http响应到客户端,这个响应头,其中就包含Set-Cookie头部,浏览器保存Cookie。

    3)、浏览器第二次访问,将保存的cookie发给后台,后台识别并更新cookie,返回浏览器再次保存。

     
     
    二.session
     

    1、session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大
     
    2、浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值,
       创建一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器
     
    3、浏览器在第二次访问服务器的时候携带Cookie信息JSESSIONID=ID的值,如果该JSESSIONID的session已经销毁,
       那么会重新创建一个新的session再返回一个新的JSESSIONID通过Cookie返回到浏览器
     
    4、针对一个web项目,一个浏览器是共享一个session,就算有两个web项目部署在同一个服务器上,针对两个项目的session是不同的
       如:你在tomcat上同时部署了两个web项目,分别是web1、web2。当你在一个浏览器上同时访问web1时创建的session是A1,访问web2时创建的session是A2。
           后面你再多次访问web1使用的session还是A1,多次访问web2时使用session就是A2
     
    5、session是基于Cookie技术实现,重启浏览器后再次访问原有的连接依然会创建一个新的session,
       因为Cookie在关闭浏览器后就会消失,但是原来服务器的Session还在,只有等到了销毁的时间会自动销毁
     
    6、如果浏览器端禁用了Cookie,那么每次访问都会创建一个新的Session,但是我们可以通过服务器端程序重写URL即可,如果页面多连接多,会增加不必要的工作量,
       那可以强制让你用户开启接收Cookie后再让其访问即可。
     

    三.Cookie和Session的区别:

    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

    2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

    3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

    4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。 

     cookie有大小限制以及浏览器存储的cookie的个数也有限制,session是没有大小限制的和服务器的内存大小有关。

    5、所以个人建议:将登陆信息等重要信息存放为session;其他信息如果需要保留,可以放在cookie中


     
  • 相关阅读:
    Dockerize a .NET Core application
    Images之管理image
    Images之Dockerfile中的命令2
    Images之Dockerfile中的命令1
    Docker Builders:Builder pattern vs. Multi-stage builds in Docker
    Images之multi-stage builds
    Images之base image
    Images之Dockerfiles
    Docker 开发最佳实践
    Docker 开发概述
  • 原文地址:https://www.cnblogs.com/rong0912/p/11981378.html
Copyright © 2011-2022 走看看