cookie

session 、cookie、token的区别

你离开我真会死。 提交于 2020-02-27 06:37:17
session session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。 cookie cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。 cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:"\")、失效时间、安全标志(指定后,cookie只有在使用SSL连接时才发送到服务器(https))。下面是一个简单的js使用cookie的例子: 用户登录时产生cookie: document.cookie = "id="+result.data['id']+"; path=/"; document.cookie = "name="

session 、cookie、token的区别

我只是一个虾纸丫 提交于 2020-02-27 06:36:51
session session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。 cookie cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。 cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:"\")、失效时间、安全标志(指定后,cookie只有在使用SSL连接时才发送到服务器(https))。下面是一个简单的js使用cookie的例子: 用户登录时产生cookie: document.cookie = "id="+result.data['id']+"; path=/"; document.cookie = "name="

单点登录原理与简单实现

◇◆丶佛笑我妖孽 提交于 2020-02-27 05:38:56
一、单系统登录机制 1、http无状态协议   web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系   但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响应合法请求,忽略非法请求;要鉴别浏览器请求,必须清楚浏览器请求状态。既然http协议无状态,那就让服务器和浏览器共同维护一个状态吧!这就是会话机制 2、会话机制   浏览器第一次请求服务器,服务器创建一个会话,并将会话的id作为响应的一部分发送给浏览器,浏览器存储会话id,并在后续第二次和第三次请求中带上会话id,服务器取得请求中的会话id就知道是不是同一个用户了,这个过程用下图说明,后续请求与第一次请求产生了关联   服务器在内存中保存会话对象,浏览器怎么保存会话id呢?你可能会想到两种方式 1 2 请求参数 cookie   将会话id作为每一个请求的参数,服务器接收请求自然能解析参数获得会话id,并借此判断是否来自同一会话,很明显,这种方式不靠谱。那就浏览器自己来维护这个会话id吧,每次发送http请求时浏览器自动发送会话id,cookie机制正好用来做这件事

单点登录原理与简单实现

只谈情不闲聊 提交于 2020-02-27 05:35:49
一、单系统登录机制 1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响应合法请求,忽略非法请求;要鉴别浏览器请求,必须清楚浏览器请求状态。既然http协议无状态,那就让服务器和浏览器共同维护一个状态吧!这就是会话机制 2、会话机制 浏览器第一次请求服务器,服务器创建一个会话,并将会话的id作为响应的一部分发送给浏览器,浏览器存储会话id,并在后续第二次和第三次请求中带上会话id,服务器取得请求中的会话id就知道是不是同一个用户了,这个过程用下图说明,后续请求与第一次请求产生了关联 服务器在内存中保存会话对象,浏览器怎么保存会话id呢?你可能会想到两种方式: 请求参数 cookie 将会话id作为每一个请求的参数,服务器接收请求自然能解析参数获得会话id,并借此判断是否来自同一会话,很明显,这种方式不靠谱。那就浏览器自己来维护这个会话id吧,每次发送http请求时浏览器自动发送会话id,cookie机制正好用来做这件事

简易JavaScript

こ雲淡風輕ζ 提交于 2020-02-27 02:48:00
简易JavaScript 一、基础 1、组成 (1)ECMAScript:解释器、翻译 (2)DOM:Document Object Model (3)BOM:Browser Object Model 2、变量类型 (1)typeof运算符 (2)显式类型转换:parseInt()/parseFloat 3、数组的方法 (1)添加 push----从尾部添加 unshift----从头部添加 (2)删除 pop----从尾部弹出 shift----从头部弹出 (3)排序sort (4)转换类 concat----连接两个数组 join----用分隔符,组合数组元素,生成字符串 (5)splice splice(开始,长度)---- 删除 splice(开始,0,元素…)----插入 4、BOM基础 (1)打开open或关闭窗口close (2)尺寸和坐标 可视区尺寸: document.documentElement.clientWidth document.documentElement.clientHeight 滚动距离: document.body.scrollTop document.documentElement.scrollTop (3)系统对话框 警告框:alert(“内容”),无返回值 选择框:confirm(“提问的内容”),返回boolean 输入框

Springboot(二) Springboot Controller 接收参数的几种方式

梦想与她 提交于 2020-02-27 00:57:18
第一类:请求路径参数 1、@PathVariable 获取路径参数。即 url/{id} 这种形式。 2、@RequestParam 获取查询参数。即 url?name= 这种形式 例子 GET http://localhost:8080/demo/123?name=suki_rong 对应的java代码: @GetMapping("/demo/{id}") public void demo(@PathVariable(name = "id") String id, @RequestParam(name = "name") String name) { System.out.println("id="+id); System.out.println("name="+name); } 也可以设置默认 public String say(@PathVariable("id") Integer id, @RequestParam( value = "name", required = false, defaultValue = "0") String name){ return "id =" + id + ";name = " + name; } 输出结果: id=123 name=suki_rong 第二类:Body参数 因为是POST请求,这里用Postman的截图结合代码说明 1、

跨域(CORS)请求问题[No 'Access-Control-Allow-Origin' header is present on the requested resource]常见解决方案

喜欢而已 提交于 2020-02-26 23:11:28
基本概念 跨域(CORS)请求 :同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 浏览器和服务器实现跨域(CORS)判定的原理 问题描述 axios提示跨域 但是返回的请求是200并且有数据 问题分析 同源策略限制以下几种行为: 1.) Cookie、LocalStorage 和 IndexDB 无法读取 2.) DOM 和 Js对象无法获得 3.) AJAX 请求不能发送 常见跨域场景 1.)同一域名下的不同文件或路径,允许访问。 http://www.domain.com/a.js http://www.domain.com/b.js http://www.domain.com/lab/c.js 2.)同一域名下的不同端口, 不允许访问。 http://www.domain.com:8000/a.js http://www.domain.com/b.js 3.)同一域名下的不同协议, 不允许访问。 http://www.domain.com/a.js https://www.domain.com/b.js 4.

RabbitMQ 消息中间件

允我心安 提交于 2020-02-26 22:03:58
1、消息中间件 1、简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。 当下主流的消息中间件有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。其能在不同平台之间进行通信,常用来屏蔽各种平台协议之间的特性,实现应用程序之间的协同。优点在于能够在客户端和服务器之间进行同步和异步的连接,并且在任何时刻都可以将消息进行传送和转发,是分布式系统中非常重要的组件,主要用来解决应用耦合、异步通信、流量削峰等问题。 2、作用 1、消息中间件主要作用 解耦 冗余(存储) 扩展性 削峰 可恢复性 顺序保证 缓冲 异步通信 2、消息中间件的两种模式 1、P2P模式 P2P模式包含三个角色:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时。 P2P的特点: 每个消息只有一个消费者(Consumer),即一旦被消费,消息就不再在消息队列中 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行它不会影响到消息被发送到队列 接收者在成功接收消息之后需向队列应答成功

前端通用方法总结.md

我的未来我决定 提交于 2020-02-26 15:39:03
1. 获取url中的某个参数值 // 通过正则获取url中的某个参数值 function getUrlParam(name){ // 定义正则表达式,以&或空白字符开头+name=+等号后面无&字符,并且以&或空白字符结尾; var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); // .search-获取query请求参数;.substr(1)-去除参数中的?; .match(reg)寻找匹配的字符串; var r = window.location.search.substr(1).match(reg); // 有name对应的值返回,没有返回null if(r!=null)return decodeURI(r[2]); return null; } // 获取ClassId的参数值 var name = getUrlParam("ClassId"); console.log(name); 2. 获取、设置Cookie document.cookie格式: a=1;b=2;c=3;d=4; document.cookie的类型:string setCookie: function(name,value){ var Days = 30; var exp = new Date(); exp.setTime(exp.getTime(

【转】 selenium3+JAVA】界面自动化测试教程(四)——浏览器的打开url、前进、后退、刷新和cookie的操作

Deadly 提交于 2020-02-26 14:50:48
https://blog.csdn.net/df0128/article/details/82823495 1、打开url 这里打开网址有两个方法,如下所示: System.setProperty("webdriver.chrome.driver", "D:\\test\\driver\\chromedriver.exe"); ChromeDriver chrome = new ChromeDriver(); //第一种方法 chrome.navigate().to("https://www.baidu.com/"); //第二张方法 chrome.get("https://www.baidu.com/"); 1 2 3 4 5 6 1 2 3 4 5 6 上面代码中两种方法都可以打开网站,事实上两者并无区别,但是很显然第二张更容易书写。 2、浏览器的前进 代码如下,此方法需要注意的是要确定网页有可以前进的地址,如果做过后退操作可以使用此方法: System.setProperty("webdriver.chrome.driver", "D:\\test\\driver\\chromedriver.exe"); ChromeDriver chrome = new ChromeDriver(); chrome.navigate().forward(); 1 2 3 1 2 3 3