一、cookie:

在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。

二、session:

session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。

三、cookie和session结合使用:

web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:

1、存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁,以及之前保存的一些状态信息。这种专业术语叫做server side session。

2、将session数据加密,然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式,但是也可以替换成其他形式。

1.在javascript中管理cookie

<!DOCTYPE html>
<HTML>
<HEAD>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<SCRIPT type="text/javascript"> function save_cookie(){
let d = new Date();
let time = 10;
let d_ = new Date();
let time_ = 1000;
d.setTime(d.getTime() + time*1000); //设置过期时间为10秒
d_.setTime(d_.getTime() + time_*1000);
document.cookie = "first=" + escape("c/c++") + ";expires=" + d;
document.cookie = "second=" + escape("java") + ";expires=" + d_;
} function get_all_cookie() {
let cookies = document.cookie.split(/; /g); //split函数为分割函数,第一个参数为从指定的地方分割,第二个参数为限制分割字符串的个数
for(let i = 0;i < cookies.length;i++){ let cookie = cookies[i];
if(cookie.indexOf("=") == -1){ //indexOf函数返回字符出现的下标 continue;
} let name = cookie.substring(0, cookie.indexOf("=")); //substring 用于返回一个从指定位置开始到结束的指定长度的子字符串 原形:substring(start,end)
let value = cookie.substring(cookie.indexOf("=") + 1);
alert("cookie[" + i + "]: name=" + name + ", value=" + value);
}
} function get_cookie(name) {
let pos = document.cookie.indexOf(name + "=");
if(pos == -1){ return null; }else{ let pos_ = document.cookie.indexOf(";",pos); //indexOf的第二个参数为开始检索的位置 if(pos_ == -1){ return document.cookie.substring(pos + name.length + 1); }else{ return document.cookie.substring(pos + name.length + 1,pos_);
}
}
} function del_cookie() {
let d = new Date();
d.setTime(d.getTime()); //设置过期时间为10秒
document.cookie = "first=" + escape("c/c++") + ";expires=" + d;
document.cookie = "second=" + escape("java") + ";expires=" + d;
} function get_info() {
alert(get_cookie('second'));
} </SCRIPT>
</HEAD> <BODY>
<button οnclick="save_cookie()">存放cookie</button>
<button οnclick="get_all_cookie()">得到所有cookie</button>
<button οnclick="get_info()">得到key=second的cookie的value</button>
<button οnclick="del_cookie()">删除cookie</button>
</BODY>
</HTML>

下面是cookie的时间信息(firefox是右键->查看元素->储存):

Javascript cookie和session的更多相关文章

  1. JavaScript能否操作cookie和session?

    JavaScript能否操作cookie和session? 解答:JavaScript可以操作cookie,但是不能操作session

  2. django的cookie和session以及内置信号、缓存

    cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...

  3. 【转】Cookie和Session区别和联系详解

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  4. 理解Cookie和Session机制(转)

    目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie ...

  5. cookie 和session 的区别详解

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...

  6. Cookie和Session的区别详解

    本文引用自:http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一 ...

  7. Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)

    通常验证用户输入是否合法的话,是前端js和后端共同验证的,这是因为前端js是可以被禁用的,假如被禁用了,那就没法用js实现验证合法与否了,也就是即使用户输入的不合法,但是也没提示,用户也不知道怎么输入 ...

  8. cookie 和session 的区别

    假如我填好了淘宝的用户名密码,点击登录,浏览器客户端像服务器端发送请求,这时服务器端看这个用户是第一次登陆,session会让客户端这个浏览器生成个cookie,并给cookie一个session i ...

  9. Cookie与Session的区别-总结很好的文章

    Cookie与Session的区别-总结很好的文章 本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Session有一个更深入的了解,并对 ...

随机推荐

  1. Python基础篇_实例练习1

    1.逢7跳过小游戏:从1-100之间,遇到带7的数字或者7的倍数跳过. for i in range(1,101): if i == 7 or i % 10 == 7 or i // 10 == 7: ...

  2. 【Weiss】【第03章】链表例程

    这种基础例程,如之前所提,会有一个实现和一个简单的测试代码. 链表其实没什么可说的,其实包括后面的栈和队列也没什么可说的,直接放代码吧. 下面这个是测试代码 #include <iostream ...

  3. 机器学习 - 命名实体识别之Hidden Markov Modelling

    概述 命名实体识别在NLP的应用中也是非常广泛的,尤其是是information extraction的领域.Named Entity Recognition(NER) 的应用中,最常用的一种算法模型 ...

  4. CF230B T-primes 题解

    原题链接 简要题意: 判断一个数是否只有 \(3\) 个因数. 首先,如果一个数有奇数个因数,那么这个数是完全平方数. 道理很简单:因数是成对的,那么必然存在 \(k^2 = n\),此时 \(k\) ...

  5. 贪心-谷歌-857. 雇佣 K 名工人的最低成本

    2020-03-15 22:00:39 问题描述: 有 N 名工人. 第 i 名工人的工作质量为 quality[i] ,其最低期望工资为 wage[i] . 现在我们想雇佣 K 名工人组成一个工资组 ...

  6. 给rm命令加保险

    众所周知,脑残可以学习,但是手残没法治.相信每一位喜欢用终端操作电脑的同学都曾手误使用 rm 命令把不该删除的文件删了.然而,使用 rm 删除的文件是不会进去回收站的. 所以,最好的方法就是我们自定义 ...

  7. PyTorch Hub发布!一行代码调用最潮模型,图灵奖得主强推

    为了调用各种经典机器学习模型,今后你不必重复造轮子了. 刚刚,Facebook宣布推出PyTorch Hub,一个包含计算机视觉.自然语言处理领域的诸多经典模型的聚合中心,让你调用起来更方便. 有多方 ...

  8. JavaScript DOM 事件模型

    JavaScript DOM 事件模型 JavaScript 是基于面向对象和事件驱动的一门语言,事件模型是 DOM 中至关重要的内容,理解事件驱动机制.事件反馈.事件冒泡.事件捕获以及事件委托能帮助 ...

  9. hive的基本操作与应用

    通过hadoop上的hive完成WordCount 启动hadoop Hdfs上创建文件夹 创建文件夹 上传文件至hdfs 启动Hive 创建原始文档表 导入文件内容到表docs并查看 用HQL进行词 ...

  10. Python中类型的概念(一)

    本课程主要介绍6种Python语言中的类型:数字类型.字符串类型.元组类型.列表类型文件类型.字典类型 1.数字类型 Python语言包括三种数字类型:整数类型.浮点数类型.复数类型 (1)整数类型 ...