cookie

多个系统域名使用同一认证中心做单点登录的做法

泪湿孤枕 提交于 2019-12-03 23:12:05
举个简单又不失一般性的场景,两个应用 A 和 B,域名分别是www.a.com、www.b.com,统一认证中心的域名是www.sso.com 1.用户通过浏览器先访问 A系统www.a.com/pageA , 这个pageA是个需要登录才能访问的页面, 2.A系统发现用户没有登录, 就重定向到认证中心,www.sso.com/login?redirect=www.a.com/pageA 3.浏览器会用这个www.sso.com/login?redirect=www.a.com/pageA 去访问认证中心 4.认证中心一看, 没登录过, 认证中心就让用户去登录, 登录成功以后, 认证中心要做几件重要的事情 : 4.1. 建立一个session。 4.2. 创建一个ticket (可以认为是个随机字符串) 4.3. 然后通过浏览器再重定向到A系统, url 中带着ticket : www.a.com/pageA?ticket=T123 与此同时cookie也会发给浏览器,比如:Set cookie : ssoid=1234, sso.com 4.4 A系统ticket拿到以后需要再次向认证中心做验证,认证中心说没错,是我发的,那你就可以认为用户在认证中心登录过了 5.建立session, 返回pageA这个资源,同时给浏览器发一个cookie : Set cookie :

注解之@CookieValue

大兔子大兔子 提交于 2019-12-03 23:11:12
@RequestHeader以及@CookieValue这两个注解用法类似,属性也相同,所以,写在一起。二者属性和RequestParam的属性一样,用法也几乎一样。 作用 @RequestHeader注解主要是将请求头的信息区数据,映射到功能处理方法的参数上。@CookieValue注解主要是将请求的Cookie数据,映射到功能处理方法的参数上。 属性说明 Annotation which indicates that a method parameter should be bound to an HTTP cookie. 它将一个HTTP cookie绑定于方法的一个参数。 1、value:绑定的参数名称,String类型。 2、required:是否必须包含value,boolean类型,默认为 true,表示请求参数中必须包含对应的参数;若不存在,将抛出异常。 3、defaultValue:默认值,String类型。当没有传参时将使用此值赋值。 案例分析 二者在开发中很少被用到,了解即可。下面的代码示例演示了如何获取cookie JSESSIONID,Accept和User-agent 的值: @RestController @RequestMapping("/user") public class UserController { @RequestMapping("

flask中cookie和session介绍

孤者浪人 提交于 2019-12-03 23:02:35
flask中 cookie和session介绍 一、 cookie: 在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。 二、 session: session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。 三、 cookie和session结合使用: web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式: 1、存储在服务端:通过cookie存储一个session_id

cookie

南楼画角 提交于 2019-12-03 23:02:23
cookie 2019 年 11 月 4 日 10:49 · cookie 是什么鬼 · 首先得先了解一下 HTTP( 超文本传输协议 ) HTTP 是一种无状态协议,即服务器不保留与客户交易 ( 会话 ) 时的任何状态 , 同一个客户端的这次请求和上次请求没有对应关系 , 它并不知道这两个请求来自同一个客户端 , 为了解决这个问题, Web 程序引入了 cookie 机制来维护状态。 ( 但 这 种健忘症似的毛病 , 大大减轻了服务器记忆负担,从而保持较快的响应速度 ) · 概念 : · cookie 是一种会话跟踪技术,是浏览器提供的一种机制 , 是存储于访问者计算机中的一小块数据 , 可以由 JavaScript 对其进行操作 ( 设置、读取、删除 ) , 其仅仅是浏览器实现的一种数据存储功能 会话:用户进入网站,开始浏览信息到关闭浏览器的过程,就称之为是一次会话 , 会话跟踪技术:浏览器和服务器之间在进行多次请求间共享数据的过程,就称为会话跟踪技术 cookie 由服务器生成,发送给浏览器,浏览器把 cookie 以 kv 形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该 cookie 发送给服务器。 由于 cookie 是存在客户端上的,所以浏览器加入了一些限制确保 cookie 不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的 cookie

flask中cookie和session介绍

限于喜欢 提交于 2019-12-03 22:51:24
flask中 cookie和session介绍 一、 cookie: 在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。 二、 session: session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。 三、 cookie和session结合使用: web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式: 1、存储在服务端:通过cookie存储一个session_id

flask处理csrf攻击

空扰寡人 提交于 2019-12-03 22:41:18
CSRF攻击原理 csrf攻击流程 具体流程 - 文字描述 通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的 session,并且该 session 的用户 Bob 已经成功登陆。 黑客 Mallory 自己在该银行也有账户,他知道上文中的 URL 可以把钱进行转帐操作。 Mallory 可以自己发送一个请求给银行:http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory。但是这个请求来自 Mallory 而非 Bob,他不能通过安全认证,因此该请求不会起作用。 这时,Mallory 想到使用 CSRF 的攻击方式,他先自己做一个网站,在网站中放入如下代码: src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory ”,并且通过广告等诱使 Bob 来访问他的网站。 当 Bob 访问该网站时,上述 url 就会从 Bob 的浏览器发向银行,而这个请求会附带 Bob 浏览器中的 cookie 一起发向银行服务器。大多数情况下,该请求会失败,因为他要求 Bob 的认证信息。 但是,如果 Bob 当时恰巧刚访问他的银行后不久,他的浏览器与银行网站之间的 session 尚未过期,浏览器的 cookie

flask中cookie和session的使用

一个人想着一个人 提交于 2019-12-03 22:36:47
设置cookie from flask import Flask,Response app = Flask(__name__) @app.route('/index') def index(): response = Response("设置cookie") response.set_cookie('username','sfencs') return response if __name__ == '__main__': app.run() 获取cookie username= request.cookies.get('username') 删除cookie response.delete_cookie('username') 设置session 使用session需要设置SECRET_KEY from flask import Flask,Response,session app = Flask(__name__) app.config['SECRET_KEY'] = ‘asdadasd’ @app.route('/index') def index(): session['username'] = 'sfencs' return 'session' if __name__ == '__main__': app.run() 获取session username =

http协议概览

吃可爱长大的小学妹 提交于 2019-12-03 21:21:25
这里我只是对一些知识进行简单的整理,方便自己理解记忆,还有很多不完善的地方,更多细节,需要查看书籍或者其他文章 http协议的发展过程 HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。 http/0.9 1991年发布,只有一个命令GET,协议规定,服务器只能回应HTML格式的字符串,不能回应别的格式。 http/1.0 1996年5月发布,HTTP/1.0 版本发布,内容大大增加,首先,任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础。除了GET命令,还引入了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。 HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。 其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。 **缺点:** 每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。 TCP连接的新建成本很高

《图解HTTP》读后总结

元气小坏坏 提交于 2019-12-03 21:08:07
阅读时间 :2019.10.30-2019.11.6 阅读心得 : 从知乎上看到有人推荐这本书,本身对计算机网络方面学习的比较少,于是就买来这本书开始看。这本书总体看下来比较轻松,因为书中的插画非常卡通,而且因为整本书都是在围绕HTTP进行讲解,所以内容上不会设计太多其他深奥的知识。读完之后,我对HTTP有了一个基本的认识,从以前只知道它是一个协议,到现在能够搞清楚这个协议内部的结构、返回的状态码等等,这都得益于这本小巧但又细致的书。也希望感兴趣的伙伴可以去读一读这本书呀! 阅读总结 : 【这本书一共有十一章,每一章都根据侧重点的不同展开介绍。在这里我将本书的章节框架展开,并根据自己读完的理解给每个部分做个小结,也方便自己日后复习。】 第一章:了解Web即网络基础 1.1 使用HTTP协议访问Web(什么是 HTTP ?什么是 客户端 、 服务器端 ?) 1.2 HTTP的诞生(诞生 原因 :知识共享; WWW (即Web)构建技术:HTML、HTTP、URL) 1.3 网络基础TCP/IP (HTTP是TCP/IP内部的一个子集;TCP/IP的传输流?发送端从应用层往下走,每通过一层增加首部,接收端从链路层往上走,每通过一层删除首部) TCP/IP分层 如下表所示: 应用层 各类应用服务,比如FTP(文件传输协议)、DNS(域名系统) 传输层 将计算机之间的数据进行分割、传输

09Cookie&Session

荒凉一梦 提交于 2019-12-03 21:04:04
1.会话技术 1. 会话:一次会话中包含多次请求和响应。    一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 2. 功能:在一次会话的范围内的多次请求间,共享数据 3. 方式:   1. 客户端会话技术:Cookie   2. 服务器端会话技术:Session 2.Cookie 1. 概念:客户端会话技术,将数据保存到客户端 2. 快速入门: * 使用步骤: 1. 创建Cookie对象,绑定数据 * new Cookie(String name, String value) 2. 发送Cookie对象 * response.addCookie(Cookie cookie) 3. 获取Cookie,拿到数据 * Cookie[] request.getCookies() package cn.itcast.cookie; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax