目录

存储读取session测试

5.如何用java获取请求和响应中HttpHeaders的Cookie呢?

6.cookie的格式

7.cookie如何存储JSESSIONID?


session和cookie的区别:

cookie是存储在本地数据;session是存储在服务器上的数据。

存储读取session测试

1.先写两行代码,在同一个服务器下,先后存储session和取session。

    @RequestMapping("testSession1")public void testSession1(){//存储sessionrequest.getSession().setAttribute("test", "content");System.out.println("存储test的值为content");}@RequestMapping("testSession2")public void testSession2(){//打印上次存储的sessionSystem.out.println(request.getSession().getAttribute("test"));}

2.用浏览器分别请求这两个请求。

显示结果:
存储test的值为content
content

原因分析:浏览器自从将服务器端返回的cookie保存了起来,下次再访问同一个服务,就会带着之前的cookie访问,来证明是同一个用户

3.用postman分别请求这两个请求。(postman自带cookie,如果JSESSIONID相同的话,服务器端也会认为这是同一个用户发起的两个请求,所以请求结果和用浏览器一样)

请求结果:

存储test的值为content
content

4.用redisTemplate或者httpClient分别请求,因为请求的Headers中不包含Cookie,所以被服务器端认作不同用户的请求,所以第二个请求session取不到。

5.如何用java获取请求和响应中HttpHeaders的Cookie呢?

//获取响应的Cookie
HttpHeaders headers = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class).getHeaders();
List<String> cookies = headers.get("Set-Cookie");//向请求header放cookie
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.put("Cookie", cookies);
HttpEntity<String> requestEntity2 = new HttpEntity<String>(null, httpHeaders);
restTemplate.exchange(url2, HttpMethod.GET, requestEntity2, String.class);//获取cookie
public static List<String> getCookieList(HttpServletRequest request) {List<String> cookieList = new ArrayList<>();Cookie[] cookies = request.getCookies();if (cookies == null || cookies.length == 0) {return cookieList;}for (Cookie cookie : cookies) {cookieList.add(cookie.getName() + "=" + cookie.getValue());}return cookieList;
}

6.cookie的格式

  根据Netscape公司的规定,Cookie格式如下:

  Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE

  NAME=VALUE:

  这是每一个Cookie均必须有的部分。NAME是该Cookie的名称,VALUE是该Cookie的值。在字符串“NAME=VALUE”中,不含分号、逗号和空格等字符。
  Expires=DATE:Expires变量是一个只写变量,它确定了Cookie有效终止日期。该属性值DATE必须以特定的格式来书写:星期几,DD-MM-YY HH:MM:SS GMT,GMT表示这是格林尼治时间。反之,不以这样的格式来书写,系统将无法识别。该变量可省,如果缺省时,则Cookie的属性值不会保存在用户的硬盘中,而仅仅保存在内存当中,Cookie文件将随着浏览器的关闭而自动消失。
  Domain=DOMAIN-NAME:Domain该变量是一个只写变量,它确定了哪些Internet域中的Web服务器可读取浏览器所存取的Cookie,即只有来自这个域的页面才可以使用Cookie中的信息。这项设置是可选的,如果缺省时,设置Cookie的属性值为该Web服务器的域名。
  Path=PATH:Path属性定义了Web服务器上哪些路径下的页面可获取服务器设置的Cookie。一般如果用户输入的URL中的路径部分从第一个字符开始包含Path属性所定义的字符串,浏览器就认为通过检查。如果Path属性的值为“/”,则Web服务器上所有的WWW资源均可读取该Cookie。同样该项设置是可选的,如果缺省时,则Path的属性值为Web服务器传给浏览器的资源的路径名。
  可以看出我们借助对Domain和Path两个变量的设置,即可有效地控制Cookie文件被访问的范围。
  Secure:在Cookie中标记该变量,表明只有当浏览器和Web Server之间的通信协议为加密认证协议时,浏览器才向服务器提交相应的Cookie。当前这种协议只有一种,即为HTTPS。

7.cookie如何存储JSESSIONID?

https://blog.csdn.net/chunqiuwei/article/details/23461995

session和cookie到底有什么联系?这一篇文章给你分析的明明白白~相关推荐

  1. 适合零基础学习者的Java学习路线图到底长啥样?一篇文章带你学会Java

    很多小伙伴在转行互联网的时候,都担心自己不能坚持,不知道Java适不适合自己. 那最好的方式就是先不要着急直接转行,自己可以先去试着学习一些基础知识,看看对Java的学习难度能否适应以及自己是否真心喜 ...

  2. Python 中 Mock 到底该怎么玩?一篇文章告诉你(超全)

    1. 前言 微服务架构下,由于各类服务开发进度的不一致,导致联调工作经常会存在不确定性,进而导致项目延期 在实际工作中,为了保证项目进度,我们经常需要针对部分未完成模块及不稳定模块采用 Mock 方式 ...

  3. python三维数据转换成二维_5大Python可视化库到底选哪个好?一篇文章搞定从选库到教学...

    最近和鲸社区的大佬们,竟不约而同地写起了可视化库的教程,开始了掰头 ※完整教程列表在文末附录 虽然对于我们这种吃瓜群众来说是件好事,但 大概大佬的快乐往往就是那么的朴实无华且枯燥吧.害,管他呢,赶紧拿 ...

  4. python拿什么做可视化界面好_5大Python可视化库到底选哪个好?一篇文章搞定从选库到教学...

    最近和鲸社区的大佬们,不约而同地写起了可视化库的教程 虽然对于我们这种吃瓜群众来说是件好事,但 大概大佬的快乐往往就是那么的朴实无华且枯燥吧.害,管他呢,赶紧拿出来给大家瞅瞅. 今天提及的5个Pyth ...

  5. 一文彻底搞懂Cookie、Session、Token到底是什么

    作者:不学无数的程序员 原文链接:https://juejin.im/post/5de4c3c76fb9a071b86cc482 Cookie 夏洛:大爷,楼上322住的是马冬梅家吧? 大爷:马都什么 ...

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

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

  7. Session 和 Cookie 的区别与联系

    一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为你浏览某个网页的时候,WE ...

  8. 浅谈Session与Cookie的关系

    阅读目录 一.概念理解: 首先cookie是服务端识别客户的唯一标识的依据,客户在访问网站时候,服务端为了记住这个客户,会在服务端按照它的规则制作一个cookie数据,会将这个cookie数据保留在服 ...

  9. apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 第一时间与你相约 每日英文 Promise yourself to be so strong that nothing can ...

最新文章

  1. 深度解析机器学习中的置信区间(附代码)
  2. paramiko连接方式
  3. 深入理解int a[5];
  4. 作业调度算法--高响应比优先 操作系统_处理器管理_编程题
  5. 【maven插件】asciidoctor-maven-plugin:编译Asciidoc
  6. C语言学习之用筛选法求100之内的素数
  7. Java ArrayDeque
  8. Java一次编译,到处运行是如何实现的
  9. 计算机课中排序选什么,《计算机应用基础课件》1.6 排序复习课程.ppt
  10. SPOJ COT Count on a tree(主席树+倍增lca)
  11. 《KyLin学习理解》-01-KyLin麒麟的简介及其思想
  12. 保存单文件为mhtml
  13. AccessibilityService+OpenCV实现微信7.0.0抢红包插件
  14. 如何制作千人千面的NFT?如何存储NFT?#Crystals #nft.storage #ipfs
  15. Unity animation动画编辑器快捷键
  16. MySQL复制(三) --- 高可用性和复制
  17. 陳三甲网络笔记:抖音赚钱记,我被割韭菜的经历!
  18. 工业互联网方兴未艾,做好工业现场数据管理是破局关键
  19. HDR视频和截图曝光严重,需要如何处理?
  20. 在仓库管理中WMS系统与ERP的区别

热门文章

  1. WEB技术架构的资源链接。
  2. oracle ORA-00604和BadImageFormatException的解决方法
  3. 单例模式的特点,懒汉式和饿汉式的区别
  4. 哔哩哔哩注册--表单练习
  5. 热泵精馏_精馏干货16 || 分子蒸馏
  6. 2层框架结构柱子间距_框架结构的特点有哪些?框架结构是什么?
  7. Chrome浏览器官方离线安装包下载
  8. python速成一小时_Python学习|一小时快速入门python(一)
  9. 两个整数百分百C语言,2011年9月份计算机二级C语言上机题库(百分百准确),,,[1]
  10. html 按钮ajax请求,使用单个提交按钮和Ajax在JSP中提交两个HTML表单