一、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

  1. <!DOCTYPE html>
  2. <HTML>
  3. <HEAD>
  4. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  5. <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
  6. <SCRIPT type="text/javascript">
  7.  
  8. function save_cookie(){
  9. let d = new Date();
  10. let time = 10;
  11. let d_ = new Date();
  12. let time_ = 1000;
  13. d.setTime(d.getTime() + time*1000); //设置过期时间为10秒
  14. d_.setTime(d_.getTime() + time_*1000);
  15. document.cookie = "first=" + escape("c/c++") + ";expires=" + d;
  16. document.cookie = "second=" + escape("java") + ";expires=" + d_;
  17. }
  18.  
  19. function get_all_cookie() {
  20. let cookies = document.cookie.split(/; /g); //split函数为分割函数,第一个参数为从指定的地方分割,第二个参数为限制分割字符串的个数
  21. for(let i = 0;i < cookies.length;i++){
  22.  
  23. let cookie = cookies[i];
  24. if(cookie.indexOf("=") == -1){ //indexOf函数返回字符出现的下标
  25.  
  26. continue;
  27. }
  28.  
  29. let name = cookie.substring(0, cookie.indexOf("=")); //substring 用于返回一个从指定位置开始到结束的指定长度的子字符串 原形:substring(start,end)
  30. let value = cookie.substring(cookie.indexOf("=") + 1);
  31. alert("cookie[" + i + "]: name=" + name + ", value=" + value);
  32. }
  33. }
  34.  
  35. function get_cookie(name) {
  36. let pos = document.cookie.indexOf(name + "=");
  37. if(pos == -1){
  38.  
  39. return null;
  40.  
  41. }else{
  42.  
  43. let pos_ = document.cookie.indexOf(";",pos); //indexOf的第二个参数为开始检索的位置
  44.  
  45. if(pos_ == -1){
  46.  
  47. return document.cookie.substring(pos + name.length + 1);
  48.  
  49. }else{
  50.  
  51. return document.cookie.substring(pos + name.length + 1,pos_);
  52. }
  53. }
  54. }
  55.  
  56. function del_cookie() {
  57. let d = new Date();
  58. d.setTime(d.getTime()); //设置过期时间为10秒
  59. document.cookie = "first=" + escape("c/c++") + ";expires=" + d;
  60. document.cookie = "second=" + escape("java") + ";expires=" + d;
  61. }
  62.  
  63. function get_info() {
  64. alert(get_cookie('second'));
  65. }
  66.  
  67. </SCRIPT>
  68. </HEAD>
  69.  
  70. <BODY>
  71. <button οnclick="save_cookie()">存放cookie</button>
  72. <button οnclick="get_all_cookie()">得到所有cookie</button>
  73. <button οnclick="get_info()">得到key=second的cookie的value</button>
  74. <button οnclick="del_cookie()">删除cookie</button>
  75. </BODY>
  76. </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. vue 模板 template init

    <template> <div> </div> </template> <script> export default { name: '模 ...

  2. @on-row-click="$emit('on-row-click', arguments[0], arguments[1])" 行内返回事件的一种写法

    @on-row-click="$emit('on-row-click', arguments[0], arguments[1])"

  3. Python基础 | 数据文件的读写

    目录 txt txt的读入 txt的写出 csv xls\xlsx 在线网页数据 常用的工具 爬虫的步骤 pdf pdfrw PyPDF2 提取文档信息 word文档 其他统计软件生成文件 本文总结使 ...

  4. Ubuntu的BEEP去哪里了?

    一直知道ubuntu的beep不响应了,但是一直都没太关注过它怎么了. 今天关注了一下,发现网上都是在问怎么关掉它的,时间还是在07年左右. 搜索到了一些帖子,有一些是说没有找到恢复的方法,还有一些, ...

  5. Model、Form、ModelForm的比较

    Model.Form.ModelForm 本节内容: 1:Model 2:Form 3:Model Form 1 2 3 http://www.cnblogs.com/wupeiqi/articles ...

  6. hdu1213 并查集板子

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1213/ 并查集是一种支持合并与查找的数据结构,在森林中进行操作,加上路径压缩,合并和查找的时间复杂度几乎都是常数 ...

  7. jq 导航跟随 模拟京东手机端

    想做一个导航跟随,但是代码都要下载,自己简单些了一个,css都放html里面了,所以也不用下载直接新建html,然后粘贴,点开就是导航跟随效果 效果如图 <!DOCTYPE html> & ...

  8. 动态规划-Maximum Subarray-Maximum Sum Circular Subarray

    2020-02-18 20:57:58 一.Maximum Subarray 经典的动态规划问题. 问题描述: 问题求解: public int maxSubArray(int[] nums) { i ...

  9. docker image换包步骤

    Docker Commit 1.在IDEA中通过maven package得到watchman-1.5.0-SNAPSHOT.jar,将其scp到baisheng1本地: 2.查看dbaservice ...

  10. [Java8教程]Java8新特性进阶集合

    Java8新特性进阶集合 基于 AOP 抽离方法的重复代码 Java8:当 Lambda 遇上受检异常 Java8:对字符串连接的改进 Java8:Java8 中 Map 接口的新方法 Java8:当 ...