本文转至链接:https://blog.csdn.net/tanyunlong_nice/article/details/47188659

一、Session与Cookie介绍

这些都是基础知识,不过有必要做深入了解。先简单介绍一下。

二者的定义:

当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,

都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie

里的内容来判断使用者,送出特定的网页内容给你。 Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie

来辨认使用者,以方便送出使用者量身定做的内容,像是 Web 接口的免费 email 网站,都要用到 Cookie。

具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制

来达到保存标识的目的,但实际上它还有其他选择。

cookie机制。正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示

浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用

是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围

大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。

cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这

个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。

会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie

保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏

览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式

session机制。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

      当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识

(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来

使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相

关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应

中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给

服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时

仍然能够把session id传递回服务器。

经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器

会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如:

实际上这种技术可以简单的用对action应用URL重写来代替。

二、二者之间的区别

cookie和session的比较

一、对于cookie:

①cookie是创建于服务器端

②cookie保存在浏览器端

③cookie的生命周期可以通过cookie.setMaxAge(2000);来设置,如果没有设置setMaxAge,

则cookie的生命周期当浏览器关闭的时候,就消亡了

④cookie可以被多个同类型的浏览器共享 可以把cookie想象成一张表

比较:

①存在的位置:

cookie 存在于客户端,临时文件夹中

session:存在于服务器的内存中,一个session域对象为一个用户浏览器服务

②安全性

cookie是以明文的方式存放在客户端的,安全性低,可以通过一个加密算法进行加密后存放

session存放于服务器的内存中,所以安全性好

③网络传输量

cookie会传递消息给服务器

session本身存放于服务器,不会有传送流量

④生命周期(以20分钟为例)

(1)cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,

(2)session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁

但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期

(3)关机会造成session生命周期的结束,但是对cookie没有影响

⑤访问范围

session为一个用户浏览器独享

cookie为多个用户浏览器共享

使session失效的方法:

1.关闭tomcat

2.reload web应用

3.session时间到

4invalidate session

Session与Cookie介绍相关推荐

  1. 单点登录与权限管理本质:session和cookie介绍

    本篇开始写「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,这部分主要介绍相关的知识概念.抽象的处理过程.常见的实现框架.通过这部分的介绍,能够对单点登录与权限管理有整体上的了解,对其相关 ...

  2. 【转】更详细的 有关session和cookie介绍及应用的讲解

    一.术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction和session在某些语境下的含义是相同的. session, ...

  3. Task03 session和cookie、代理、selenium自动化 拔高:丁香园留言板爬取

    一.selenium工具 1.selenium介绍: selenium是什么:一个自动化测试工具(大家都是这么说的) selenium应用场景:用代码的方式去模拟浏览器操作过程(如:打开浏览器.在输入 ...

  4. json session cookie介绍和使用

    Cookie的介绍和使用:cookie的作用是当用户通过http访问一个服务器时,这个服务器会将一些key/value键值对返回给客户端浏览器,并给这些数据加上限制条件,在条件符合时用户下次访问服务器 ...

  5. Cookie和Session的详细介绍和使用规范

           Cookie和Session的详细介绍和使用规范 Cookie的由来(浏览器端的会话技术--保存数据技术) Cookie的需求分析 场景: 现象:进入淘宝的登陆页面,显示了我上次登录的用 ...

  6. C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开.本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ...

  7. session 与 cookie的区别

    session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键.基于网上一些文章和资料的参阅,及作者个人的应用体会,对这 ...

  8. html点击按钮删除session,Asp.net中安全退出时清空Session或Cookie的实例代码

    概览: 网站中点击退出,如果仅仅是重定向到登录/出页面,此时在浏览器地址栏中输入登录后的某个页面地址如主页,你会发现不用登录就能访问.这种所谓的退出并不是安全的. 那么怎样做到安全退出呢? 那就是点击 ...

  9. 白话 Session 与 Cookie:从经营杂货店开始

    在Web开发里面有一个历久不衰的议题,那就是Session与Cookie的区别.从我刚开始学程序时这一题就常出现在面试考题里,一直到现在都还是能看见这个问题. 这个问题重要吗? 我觉得满重要的.因为S ...

最新文章

  1. ABAP数据库—更新数据
  2. js中创建form表单
  3. linux运维需要掌握的基础知识
  4. 08Oracle Database 完整性约束
  5. PHP获取客户端IP函数
  6. 读书 曾国藩(最新图文版)
  7. 看C++游戏程序员发展
  8. [C++] printf pitfall
  9. 十年Java经验让我总结出了这些,什么是真正的架构设计?
  10. 网络安全——企业渗透一
  11. Uipath Excel 自动化系列18-RefreshPivotTable(刷新透视表)
  12. 树莓派与嵌入式开发的关系
  13. RAW格式 RAW RGB格式
  14. Minecraft 1.16.5模组开发(二十八) 自定义生态群系(biome)
  15. android 和 iphone x,iPhone X和安卓对比有哪些优势 iPhonex跑分评测分析
  16. 亚马逊云科技上的游戏服务:Lumberyard + Amazon GameLift + Twitch
  17. 关于C语言异或实现两数交换的理解
  18. 用python绘制bilibili小电视
  19. Docker-docker安全
  20. 线上计算机科学课程,关于加州大学伯克利分校2021年春季线上课程(计算机科学方向)申请通知...

热门文章

  1. 修改Windows 8中文输入法切换方式
  2. linux内存不足解决办法
  3. win10系统安装到服务器失败怎么解决,重装系统win10失败怎么办 重装系统失败的常见原因和解决方法...
  4. Ubuntu-拼音输入法安装
  5. java做服务端,FLASH做客户端交互总结
  6. cd linux menu.lst,怎么把cdlinux做成u盘启动?u盘启动cdlinux制作准备工具方法
  7. Could not find setter for ID on class com.iflytek.civilAffairs.pojo.MzywShswcYtwy
  8. Swift — UIKit 之(8)—— 持久层|用户偏好设置
  9. Python数据类型——String
  10. 文章资源下载——百度云