cookie

[转帖]3 分钟带你深入了解 Cookie、Session、Token

大憨熊 提交于 2020-01-23 19:32:33
3 分钟带你深入了解 Cookie、Session、Token https://segmentfault.com/a/1190000021543693 经常会有用户咨询,CDN 是否会传递 Cookie 信息,是否会对源站 Session 有影响,Token 的防盗链配置为什么总是配置失败?为此,我们就针对 Cookie、Session 和 Token,来谈谈它们的用处是什么。 Cookie Cookie 虽然听起来不是技术名词,但却为互联网提供一项至关重要的功能:“记录访问过的网站或正在访问的网站。” HTTP 协议是无状态的,服务器不知道浏览器上一次访问做了什么,也无法对用户会话进行跟踪连接。为此就引入 Cookie 技术,Cookie 是由服务器发送到客户端浏览器的一小段文本文件,包含了网站访问活动信息。例如首选项语言或其它一些设置。浏览器会保存这些数据,并在客户端下次访问该网站时调用它们,提供更方便和个性化的访问体验。 举个简单的例子:我们在浏览购物网站时,会将选购商品添加到购物车。如果没有 Cookie 技术,因为 HTTP 是无状态协议,它不会知道之前添加选购哪些商品,放在哪个用户的购物车中。而应用 Cookie 技术后,Cookie 才会将这些信息在会话中发送给服务器,服务器读取 Cookie 信息就知道是哪些用户购物车中添加的商品信息。 Cookie 的属性

Django框架(九):视图(二) HttpRequest对象、HttpResponse对象

狂风中的少年 提交于 2020-01-23 13:37:26
1. HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以。视图的第一个参数必须是HttpRequest对象,在django.http模块中定义了HttpRequest对象的API。 1.1 属性 path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。 method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。 在浏览器中给出地址发出请求采用get方式,如超链接。 在浏览器中点击表单的提交按钮发起请求,如果表单的method设置为post则为post请求。 encoding:一个字符串,表示提交的数据的编码方式。 如果为None则表示使用浏览器的默认设置,一般为utf-8。 这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。 GET:QueryDict类型对象,类似于字典,包含get请求方式的所有参数。 POST:QueryDict类型对象,类似于字典,包含post请求方式的所有参数。 FILES:一个类似于字典的对象,包含所有的上传文件。 COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串。 session

会话技术

巧了我就是萌 提交于 2020-01-23 10:46:07
会话技术 1.一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 2.功能:在一次会话的范围内多次请求间,共享数据 3.方式: 1.客户端会话技术:Cookie 2.服务器端会话技术:Session Cookie: 1.概念:客户端会话技术,将数据保存到客户端 2.快速入门: 使用步骤: 1.创建Cookie对象,绑定数据 new Cookie(String name,String value) 2.发送Cookie对象 response.addCookie(Cookie cookie) 3.获取Cookie,拿到数据 Cookie[] request.getCookies() 3.实现原理 基于响应头set-cookie和请求头cookie实现 4.cookie细节 1.一次可不可以发送多个cookie? 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可 2.cookie在浏览器中保存多长时间? 1.默认情况下,浏览器关闭后,Cookie数据被销毁 2.持久化储存: setMaxAge(int seconds) 1.正数:将cookie数据写到硬盘文件中,cookie存活时间 2.负数:默认值 3.零:删除cookie信息 3.cookie能不能储存中文 在tomcat8之前

Cookie&Session

时光毁灭记忆、已成空白 提交于 2020-01-23 04:46:56
一、会话技术 1.什么是会话 会话是在一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 2.会话的功能 在一次会话的范围内的多次请求间,共享数据 3.会话的方式 1. 客户端会话技术:Cookie 2. 服务器端会话技术:Session 二、Cookie 1.什么是Cookie 客户端会话技术,将数据保存到客户端 2.Cookie快速入门 使用步骤: 1. 创建Cookie对象,绑定数据 * new Cookie ( String name , String value ) 2. 发送Cookie对象 * response . addCookie ( Cookie cookie ) 3. 获取Cookie,拿到数据 * Cookie [ ] request . getCookies ( ) 3.Cookie的实现原理 基于响应头set-cookie和请求头cookie实现 4.Cookie的细节 4.1 一次可以发送多个Cookie? * 可以 * 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。 4.2 Cookie在浏览器中保存多长时间? 1. 默认情况下,当浏览器关闭后,Cookie数据被销毁 2. 持久化存储: * setMaxAge ( int seconds )

Cookie,Session,Token

大兔子大兔子 提交于 2020-01-23 03:54:28
我们知道 HTTP 是一种无状态的协议,为了分辨链接是谁发起的,需自己去解决这个问题。而且一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。导致有些情况下即使是同一个网站每打开一个页面也都要登录一下。而 Session 和 Cookie 就是为解决这个问题而提出来的两个机制。 同样的 Token 也能解决这个问题,它们之间只是一个说法的差别,其实做的事情都是一样的。 Cookie 实际上是一小段的文本信息是访问某些网站后在本地存储的一些网站相关信息,下次访问时减少一些步骤。更准确的说法是: Cookie 是服务器在本地机器上存储的小段文本信息并随每一个请求发送至同一服务器,是在客户端保持状态的方案。主要包括:名字,值,过期时间,路径和域。路径与域一起构成 Cookie 的作用范围。 会话Cookie和持久Cookie 若不设置过期时间,则表示这个 cookie 的生命期为浏览器会话期间,关闭浏览器窗口, cookie 就消失。这种生命期为浏览器会话期的 cookie 被称为会话 cookie 。会话 cookie 一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把 cookie 保存到硬盘上,关闭后再次打开浏览器,这些 cookie 仍然有效直到超过设定的过期时间

3_会话及会话技术

限于喜欢 提交于 2020-01-23 02:46:00
会话及会话技术 Cookie类的常用方法 先来一张f12的cookie的图,看看里面有什么 ​ 1,setMaxAge, getMaxAge ​ Max-Age代表Cookie在浏览器上保持的有效秒数, 正整数则为计数失效秒数,浏览器会把cookie保存在本地,如果为负整数,则浏览器会把Cookie缓存在浏览器,当关闭页面时,则这个Cookie会被删除,如果为0表示立刻删除,默认为-1(关闭浏览器失效),缓存在浏览器 ​ 2,setPath,getPath 如果想然某个Cookice对站点的所有目录有效,则需要设置其值为:“/” ,如果没有设置的话,改Cookie只能访问当前路径的目录及其子目录 ​ 3,setDomain , getDomain ​ 这个是设置域名信息,需要在域名前加上“.” Session与Cokice 在浏览器端,每一次都会将当前所在的Cookie通过请求行发送给对应 domain 的域名对应的地址 在HttpServletRequest接口中的getSession(),中会直接去获取Cookie_name 为 “JSESSIONID”的Cookie。所以,request.setAttribute(), set Session时,需要把Sessoionid对应的Cookie的名称设置为"JSESSIONID" Session 就是 来源: CSDN 作者:

干掉服务状态!从 Session 到 Token,复杂度降低100倍

旧时模样 提交于 2020-01-23 02:34:32
转载:https://mp.weixin.qq.com/s/UzO9Jp79RqGSSMP5GzbVxw 作者:会点代码的大叔 在讲Token之前,先简单说说什么是 Session 和 Cookie。 首先要知道 HTTP 请求是无状态的; 无状态的意思就是:每一次请求都是独立的;每一次请求不会受到前面请求的影响,也不会影响后面的请求; 比如我们登录一个系统的时候,验证用户名密码之后,打开系统各个页面的时候就不需要再进行登录操作了,直到我们主动退出登录或超时退出登录;为了让服务器有“记忆功能”,我们可以用到 Session、Cookie。 1、Cookie 是在客户端(浏览器)保存用户信息的一种机制;Cookie 由服务器生成,发送给浏览器,然后浏览器把 Cookie 以键值对的形式保存在客户端的某个目录下面;每种浏览器存储大小会有一些差异,一般不超过 4KB; 当下一次请求的时候,会把 Cookie 发送给服务端,服务端对 Cookie 中的信息解析并验证身份。 比如你入职一个公司,会给你办一张工卡,上面有你的姓名、工号、部门等信息,你进入职场的时候,拿着工卡就可以进出。 但是 Cookie 是不可以跨域名使用的;就好像我拿着我们公司的工卡,去你们公司,保安肯定是不会放我进去的。 2、Session 保存在服务端,可以用于记录客户状态; 比如我们经常会用 Session

Django之CSRF

冷暖自知 提交于 2020-01-23 02:20:20
网页向后端传送数据的时候有两种方式,get和post。通过设置form中的method来达到是否采用get或者是post <form action="/show_all/" method="POST"> 但是django中使用post的话会遇到如下的错误 这个错误的意思是csrf校验失败,request请求被丢弃掉。我们先来了解下什么是csrf。 CSRF, Cross Site Request Forgery, 跨站点伪造请求。举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用户点击这个恶意网站上的那个链接时,就会向你的网站发来一个请求,你的网站会以为这个请求是用户自己发来的,其实呢,这个请求是那个恶意网站伪造 举个例子: 假如用户abc登录了银行的网站,并且向abc2进行了转账,对银行发送的请求是 http://bank.example/withdraw?account=abc&amount=1000000&for=abc2 . 通常情况下,请求发送到服务器后,服务器会首先验证是否是合法的session,如果是则转账成功。假设黑客也有同样银行的账号。他知道转账的时候会生成如上的请求链接。黑客也可以发送同样的请求给服务器要求转账给自己。但是服务器校验他的这个请求不是合法的session。因此黑客想到了CSRF的方式

Django之CSRF

荒凉一梦 提交于 2020-01-23 02:19:46
网页向后端传送数据的时候有两种方式,get和post。通过设置form中的method来达到是否采用get或者是post <form action="/show_all/" method="POST"> 但是django中使用post的话会遇到如下的错误 这个错误的意思是csrf校验失败,request请求被丢弃掉。我们先来了解下什么是csrf。 CSRF, Cross Site Request Forgery, 跨站点伪造请求。举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用户点击这个恶意网站上的那个链接时,就会向你的网站发来一个请求,你的网站会以为这个请求是用户自己发来的,其实呢,这个请求是那个恶意网站伪造 举个例子: 假如用户abc登录了银行的网站,并且向abc2进行了转账,对银行发送的请求是 http://bank.example/withdraw?account=abc&amount=1000000&for=abc2 . 通常情况下,请求发送到服务器后,服务器会首先验证是否是合法的session,如果是则转账成功。假设黑客也有同样银行的账号。他知道转账的时候会生成如上的请求链接。黑客也可以发送同样的请求给服务器要求转账给自己。但是服务器校验他的这个请求不是合法的session。因此黑客想到了CSRF的方式

Django之CSRF

我只是一个虾纸丫 提交于 2020-01-23 02:19:04
网页向后端传送数据的时候有两种方式,get和post。通过设置form中的method来达到是否采用get或者是post <form action="/show_all/" method="POST"> 但是django中使用post的话会遇到如下的错误 这个错误的意思是csrf校验失败,request请求被丢弃掉。我们先来了解下什么是csrf。 CSRF, Cross Site Request Forgery, 跨站点伪造请求。举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用户点击这个恶意网站上的那个链接时,就会向你的网站发来一个请求,你的网站会以为这个请求是用户自己发来的,其实呢,这个请求是那个恶意网站伪造 举个例子: 假如用户abc登录了银行的网站,并且向abc2进行了转账,对银行发送的请求是 http://bank.example/withdraw?account=abc&amount=1000000&for=abc2 . 通常情况下,请求发送到服务器后,服务器会首先验证是否是合法的session,如果是则转账成功。假设黑客也有同样银行的账号。他知道转账的时候会生成如上的请求链接。黑客也可以发送同样的请求给服务器要求转账给自己。但是服务器校验他的这个请求不是合法的session。因此黑客想到了CSRF的方式