cookie

cookie的用法与封装

社会主义新天地 提交于 2020-03-11 09:57:35
cookie的概念: 指某些网站为了辨别用户身份,进行session(会话)跟踪而存储在用户本地终端上的数据(通常经过加密)。以文本形式存在。 会话跟踪技术cookie: 跟踪每一次的连接,记录连接产生的信息,下次连接,跟着一起发送过去 特点 : 1.只能存字符,文本 2.不允许跨域(谁存的,谁用) 3.时效性,默认会话级,关闭浏览器,可以删除(在一定时间内有效,即时效性) 4.数量(50左右)和大小(4k)限制 cookie的使用: 1、设置默认的cookie: document . cookie = "user=admin" ; document . cookie = "pass=123" ; console . log ( document . cookie ) ; 在获取cookie时,document.cookie会一次性获取所有cookie,浏览器给我们返回的结果是以以下的格式呈现 user=admin; pass=123 但是这个结果不影响设置格式,设置的时候该怎么设置还是怎么设置 不允许一次性存多条 document . cookie = "a=10;b=20;c=30" ; //只会生效第一个 console . log ( document . cookie ) ; 2、设置有有效期的cookie var d = new Date ( ) ; d .

cookie和session

久未见 提交于 2020-03-11 03:58:30
引言: 在计算机通信网络中,网络协议是必不可少。其中超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。 然而HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪用户登录网站后的一系列动作,这一系列动作我们称之为会话,比如浏览商品添加到购物车并购买。 会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。在这篇博客里,我们来看看这两个技术的区别。 Cookie: Cookie实际上是一小段的文本信息。在客户端请求服务器时,如果服务器需要记录该用户状态,如用户信息等,就使用response对象向客户端浏览器发送一个Cookie。客户端会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。工作原理如下: 1. 客户端第一次向服务器发起请求 2. 服务器准备一个cookie,将需缓存的内容设置到cookie中 3. 服务器将请求响应结果与cookie一起回馈给客户端 4. 客户端处理请求的响应与读取cookie 5. 客户端再次向服务器发送请求 6. 服务器检查传来的cookie,辨认状态

不要再问我跨域的问题了

↘锁芯ラ 提交于 2020-03-11 03:53:57
写下这篇文章后我想,要不以后就把这种基础的常见知识都归到这个“不要再问我XX的问题”,形成一系列内容,希望大家看完之后再有人问你这些问题,你心里会窃喜:“嘿嘿,是时候展现真正的技术了!” 一、 不要再问我this的指向问题了 跨域这两个字就像一块狗皮膏药一样黏在每一个前端开发者身上,无论你在工作上或者面试中无可避免会遇到这个问题。为了应付面试,我每次都随便背几个方案,也不知道为什么要这样干,反正面完就可以扔了,我想工作上也不会用到那么多乱七八糟的方案。到了真正工作,开发环境有webpack-dev-server搞定,上线了服务端的大佬们也会配好,配了什么我不管,反正不会跨域就是了。日子也就这么混过去了,终于有一天,我觉得不能再继续这样混下去了,我一定要彻底搞懂这个东西!于是就有了这篇文章。 要掌握跨域,首先要知道为什么会有跨域这个问题出现 确实,我们这种搬砖工人就是为了混口饭吃嘛,好好的调个接口告诉我跨域了,这种阻碍我们轻松搬砖的事情真恶心!为什么会跨域?是谁在搞事情?为了找到这个问题的始作俑者,请点击 浏览器的同源策略 。 这么官方的东西真难懂,没关系,至少你知道了,因为浏览器的同源策略导致了跨域,就是浏览器在搞事情。 所以,浏览器为什么要搞事情?就是不想给好日子我们过?对于这样的质问,浏览器甩锅道:“同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互

Token是什么

淺唱寂寞╮ 提交于 2020-03-11 02:11:24
概念 Token在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。 传统身份验证的方法 HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。 解决的方法就是,当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 ID 号存储在 Cookie 里,下次这个用户再向服务端发送请求的时候,可以带着这个 Cookie ,这样服务端会验证一个这个 Cookie 里的信息,看看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。 基于 Token 的身份验证方法 使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的: 客户端使用用户名跟密码请求登录 服务端收到请求,去验证用户名与密码 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里 客户端每次向服务端请求资源的时候需要带着服务端签发的

flask:redirect302

孤人 提交于 2020-03-10 23:44:38
今天学习flask,在点击登出按钮,删除cookie时 出现这个问题 原因是安装bug插件 flask debug toolbar给拦截了,如果不想拦截,则需要在环境配置中加DEBUG_TB_INTERCEPT_REDIRECTS,并且设置为 False 于是在基准环境增加配置 之后成功触发后端删除cookie,进行登出操作,且前端正常显示 来源: CSDN 作者: Millet。 链接: https://blog.csdn.net/enemy_sprites/article/details/104784162

cookie的工作原理

你离开我真会死。 提交于 2020-03-10 23:33:23
  Cookie是进行网站用户身份,实现服务端Session会话持久化的一种非常好方式。Cookie最早由Netscape公司开发,现在由 IETF 的 RFC 6265 标准备对其规范,已被所有主流浏览器所支持。    1. 为什么需要Cookie?   HTTP是一种无状态的协议,客户端与服务器建立连接并传输数据,数据传输完成后,连接就会关闭。再次交互数据需要建立新的连接,因此,服务器无法从连接上跟踪会话,也无法知道用户上一次做了什么。这严重阻碍了基于Web应用程序的交互,也影响用户的交互体验。如:在网络有时候需要用户登录才进一步操作,用户输入用户名密码登录后,浏览了几个页面,由于HTTP的无状态性,服务器并不知道用户有没有登录。   Cookie是解决HTTP无状态性的有效手段,服务器可以设置或读取Cookie中所包含的信息。当用户登录后,服务器会发送包含登录凭据的Cookie到用户浏览器客户端,而浏览器对该Cookie进行某种形式的存储(内存或硬盘)。用户再次访问该网站时,浏览器会发送该Cookie(Cookie未到期时)到服务器,服务器对该凭据进行验证,合法时使用户不必输入用户名和密码就可以直接登录。   本质上讲,Cookie是一段文本信息。客户端请求服务器时,如果服务器需要记录用户状态,就在响应用户请求时发送一段Cookie信息。客户端浏览器保存该Cookie信息

token和session的区别

你说的曾经没有我的故事 提交于 2020-03-10 21:08:41
 session和token都是用来保持会话,功能相同 一、 session机制,原理 session是 服务端 存储的一个对象,主要用来存储所有访问过该服务端的客户端的用户信息(也可以存储其他信息),从而实现 保持用户会话状态 。但是服务器重启时,内存会被销毁,存储的用户信息也就消失了。不同的用户访问服务端的时候会在session对象中存储键值对,“键”用来存储开启这个用户信息的“钥匙”,在登录成功后,“钥匙” 通过cookie返回给客户端 , 客户端存储为sessionId记录在cookie中 。当客户端再次访问时,会 默认携带cookie中的sessionId 来实现会话机制。 session是基于cookie的。 cookie的数据4k左右 cookie存储数据的格式:字符串key=value cookie存储有效期:可以自行通过expires进行具体的日期设置,如果没设置,默认是关闭浏览器时失效。 cookie有效范围:当前域名下有效。所以 session这种会话存储方式方式只适用于客户端代码和服务端代码运行在同一台服务器上 (前后端项目协议、域名、端口号都一致,即在一个项目下) session持久化 用于解决重启服务器后session就消失的问题。在数据库中存储session,而不是存储在内存中。通过包: express-mysql-session 其它

java做导出提示

我只是一个虾纸丫 提交于 2020-03-10 20:18:35
总体的思路: 是在点击导出按钮时获得一个时间戳并把时间戳填充到form表单中发送给后台,后台响应成功后把发送的时间戳设置为cookie值,前端实时监测cookie值和前端的时间戳是否相等,相等就说明文件导出成功,提示导出结果。 难点:流写入到浏览器中,但是没有办法判断浏览器什么时候下载完成。 具体看代码实现: 前端表单提交提交date var date=new Date().getTime();//获取时间 html.push('<input type="text" name="date" value="'+date+'" />');//添加到表单 $('#exportForm').submit().remove();//表单提交 后端导出方法时候,加入一段添加cookie的逻辑: response.setHeader("Content-type", "text/html;charset=UTF-8"); response.setContentType("application/vnd.ms-excel"); Cookie cookie = new Cookie("D" + date, date + "," + size);//将时间戳设置到cookie中 cookie.setMaxAge(20000);//设置cookie生存时间,可调小一点 response.addCookie

fetch初步了解

ⅰ亾dé卋堺 提交于 2020-03-10 04:56:57
前言 对于ajax请求,我们不仅可以使用XMLHTTPrequest,还可以使用fetch 正文 promise 在使用ajax时,如果想要使得第二个ajax请求调用第一个ajax请求,就得使用在onreadystatechange中再次指定一个ajax请求,如果再想使用第三个,就得继续判断,这样越来越多,代码就会变得越来越复杂,这就被称为回调地狱 有什么方法可以解决这个问题呢?就是使用promise promise在ES6(ECMAScript 6.0)中被统一规范,所以新版的浏览器基本都是支持promise写法的 一个标准的promise的写法是这样的 new Promise(function(resolve, reject) { if(true) { resolve() }; if(false) { reject() }; }) promise中有三种状态,pending(等待中),resolve(已经完成,得到想要的结果),reject(已经得到,但不是想要的结果) 在promise中可以使用then方法,来处理对应的状态变化,来对应执行 ,并且then的执行结果也会返回一个promise对象,所以可以进行多次then的使用 fetch 继续来看fetch fetch('http://example.com/movies.json') .then(function

Cookie会话技术快速入门及小案例介绍

自古美人都是妖i 提交于 2020-03-10 04:36:48
会话技术: 会话:一次会话中包含多次请求和响应。 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止。 功能:在一次会话的范围内的多次请求间,共享数据。 方式: 一:客户端会话技术:Cookie 二:服务器端会话技术:Session 使用步骤: 一:创建Cookie对象,绑定数据。 new Cookie(String name,String value); 二:发送Cookie对象。 response.addCookie(Cookie cookie); 三:获取Cookie,拿到数据 Cookie[] cs = request.getCookies(); 实现原理: 基于响应头set-cookie和请求头cookie实现 cookie的细节 一:一次可以发送多个cookie吗? 可以,可以创建多个cookie对象,使用response调用addCookie()添加多个cookie。 二:cookie在浏览器中保存多长时间? 一:默认情况下,当浏览去关闭后,Cookie数据被销毁 二:持久化存储: setMaxAge(int seconds) 一:整数:将Cookie数据写到硬盘的文件中,持久化存储,cookie存活时间 二:负数:默认值 浏览器关闭cookie消失 三:零:删除cookie信息 三:Cookie可以存储中文数据吗?