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

    含义

    cookie 客户端技术

    程序把数据以cookie的形式写入浏览器,用户再访问的时候就带着存储的数据访问web资源

    一般浏览器提供了两种方式来保存,还有一种是程序员使用html隐藏域的方式自定义实现:

    [1] 使用Cookie来保存,这是最常见的方法,本文“记住我的登录状态”功能的实现正式基于这种方式的。服务器通过设置Cookie的方式将Session ID发送到浏览器。如果我们不设置这个过期时间,那么这个Cookie将不存放在硬盘上,当浏览器关闭的时候,Cookie就消失了,这个Session ID就丢失了。如果我们设置这个时间为若干天之后,那么这个Cookie会保存在客户端硬盘中,即使浏览器关闭,这个值仍然存在,下次访问相应网站时,同 样会发送到服务器上。

    [2] 使用URL附加信息的方式。这种方式和第一种方式里面不设置Cookie过期时间是一样的。

    [3] 第三种方式是在页面表单里面增加隐藏域,这种方式实际上和第二种方式一样,只不过前者通过GET方式发送数据,后者使用POST方式发送数据。但是明显后者比较麻烦

    session 服务器端

      • 存在服务器的一种用来存放用户数据的类HashTable结构。
      • 浏览器第一次发送请求时,服务器自动生成了一HashTable和一Session ID来唯一标识这个HashTable,并将其通过响应发送到浏览器。
      • 浏览器第二次发送请求会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。 
        • 一般这个值会有个时间限制,超时后毁掉这个值,默认30分钟。
      • 当用户在应用程序的 Web页间跳转时,存储在 Session 对象中的变量不会丢失而是在整个用户会话中一直存在下去。
      • Session的实现方式和Cookie有一定关系。建立一个连接就生成一个session id,打开几个页面就好几个了,这里就用到了Cookie,把session id存在Cookie中,每次访问的时候将Session id带过去就可以识别了

    1.储存位置

    session储存在服务器端

    cookie储存在客户端

    2.安全性

    cookie不是很安全,储存在客户端,有cookie欺骗的风险

    session则储存在服务器端,相对安全

    3.储存大小

    单个cookie储存大小不能超过4k

    4.存储类型

    cookie只能存储string对象

    session则支持java对象

    5.储存带来的压力

    session存储在服务器端,数据过多需要考虑带来的压力

    cookie则不会占用服务器资源

    6.域的支持范围不一样

    cookie支持www.a.com下的页面

    session则不支持api.a.com

    解决方法:

    jsonp 或者 跨域资源共享

    单点登录中,cookie 被禁用了怎么办?(一点登陆,子网站其他系统不用再登陆)

    • 单点登录的原理是后端生成一个 session ID,设置到 cookie,后面所有请求浏览器都会带上cookie,然后服务端从cookie获取 session ID,查询到用户信息。
    • 所以,保持登录的关键不是cookie,而是通过cookie 保存和传输的 session ID,本质是能获取用户信息的数据。
    • 除了cookie,还常用URL重写
  • 相关阅读:
    《秒杀系统架构分析与实战 》
    《豆瓣的基础架构》
    转--《亿级用户下的新浪微博平台架构 》
    转-《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践 》
    hdu2029
    hdu2027
    hdu2026(water~~)
    PHP电影小爬虫(2)
    今天来做一个PHP电影小爬虫。
    PHP Simple HTML DOM解析器
  • 原文地址:https://www.cnblogs.com/chenliuxiao/p/9443043.html
Copyright © 2011-2022 走看看