首页 > 其他分享 >Cookie基本使用

Cookie基本使用

时间:2023-04-23 11:33:16浏览次数:36  
标签:基本 浏览器 name 网站 使用 cookie 服务器 Cookie 请求

cookie是什么?

是由服务器端生成,发送给User-Agent(一般指浏览器),浏览器将cookie以键值对的形式保存到某个目录下的文本文件内。下次请求该网站时就把cookie发送回服务器。(cookie就是一个小文件,浏览器对其大小一般限制在4k,用来记录一些信息(一般用作标识))

为什么有cookie?

web应用程序是使用Http协议传输数据的,而Http协议是无状态的,一旦数据交换完成就会断开连接,再次交换就要重新建立连接,此时,服务器并不知道该浏览器与自己进行过数据交互(大白话就是 服务器不认识这个浏览器了,即使这个浏览器跟服务器说过话)意味着服务器无法从连接上跟踪会话。

那么,如何让服务器记住这个浏览器???(如何跟踪记录用户???),有以下几种技术

1.使用一些承载用户身份的Http请求首部(在请求头):

①、有一个字段form(现在不常用:不安全),里面存放的是E-mail,服务器根据此来识别;
②、使用user-agent字段,该字段记录浏览器的一些信息,可识别浏览器,对识别用户没有太大的帮助。
③、referer,该字段可用来进行网站统计(即从什么链接进入的该网站),也是只能粗略反映出一些信息;
2.根据客户端IP地址(缺点:http请求中没有一个字段能得到ip地址;而且有些网站会动态分配一个ip,不稳定;ip对应的是机器设备,而不是用户)

3.登陆账号密码

4.胖URL(即在已有的url后进行动态扩展拼接)并且能记住用户信息的周期仅为本次(就是说关闭窗口重新打开该页面还是不认识)

5.cookie 浏览器在发送请求后,服务器除了正常的响应之外,会在响应头里加入一个set-cookie:id=XXX,浏览器接收之后会存入本地文档(txt),下次向该服务器发送请求时,会附带此cookie.

cookie是具有保质期的

会话cookie(临时cookie) 关闭窗口就删除
永久cookie:设置有效期

cookie特点

1.需要遵循浏览器的同源策略。(即 两个网站即使根域名相同,端口或者子域名不同,那这两个网站就分别有自己的cookie,而且不能操作彼此的cookie)
2. 内存大小有限制。(每个浏览器对其个数的限制不相同,每个域名在20~50之间,大小一般都限制在4K)
3. 在本地可以被更改(所以不能放置敏感数据)

cookie使用

cookie主要是web服务器端设置的,但前端要会使用操作cookie

1.增:直接document.cookie = "age = 18";
2.注:不设置时间会是默认为临时cookie,而且同一路径下&&同一域名只能有一个名字的cookie,遵循同源策略。,一条语句语句只能设置一条cookie
3.删:将时间设为过期,浏览器就会自动删除
4.改:同增;
5.查:由于cookie是字符串,所以要进行处理.如下:

var manageCookie = {
	setCookie:function(name,value,time){
		document.cookie = name + '=' + value + ';max-age'+time;
		return this;
	},
	removeCookie: function(name){
		this.setCookie(name,'',-1);
		return this;
	},
	getCookie: function(name,callback){  //不考虑同名不同路径的cookie,即默认即使不同路径也不会出现同名的cookie
		//此处利用数组处理    
		var allCookieArr = document.cookie.split('; ');
		for(var i =0;i<allCookieArr.length;i++){
			var itemArr = allCookieArr[i].split('=');
			if(itemArr[0] == name){
				callback({itemArr[0]:itemArr[1]});
				return this;     //参数有一个function是因为return被链式调用占用,而得到值不只是显示,所以设置一个回调函数处理此值
			}
		}
		callback({undefined:undefined});
		return this;
	}
}

标签:基本,浏览器,name,网站,使用,cookie,服务器,Cookie,请求
From: https://www.cnblogs.com/yzx-sir/p/17345960.html

相关文章

  • 手把手教你使用Flask搭建ES搜索引擎(预备篇)
    今日鸡汤我死国生,我死犹荣,身虽死精神长生,成功成仁,实现大同。--赵博生/1前言/    Elasticsearch是一个开源的搜索引擎,建立在一个全文搜索引擎库ApacheLucene™基础之上。    那么如何实现 Elasticsearch和Python 的对接成为我们所关心的问题了(怎么什么都要和Pyt......
  • MAVEN使用技巧
    maven常用命令mvn-v//查看版本 mvnarchetype:create//创建Maven项目 mvncompile//编译源代码 mvntest-compile//编译测试代码 mvntest//运行应用程序中的单元测试 mvnsite//生成项目相关信息的网站 mvnpackage//依据项目生成jar文件 mvninstal......
  • 日志门面、实现框架和桥接器及实际使用
      之前总是在项目中使用现成的日志框架,用着方便就不会去思考它的框架、发展和组成,别人怎么用我也怎么用。感觉就是很模糊不清楚,说不知道也知道点,说知道又讲不明白,看了不少文章,决定把这一块梳理一下。1、现有日志的组成  可能说到日志,大家都知道一部分,什么slf4j、logback等等......
  • java使用数组实现队列
    1.1. 队列的数据结构队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。1.2. Java实现QueueTestpackagech04;publicclassQ......
  • bootstrap日期插件datetimepicker的简单使用
    <!DOCTYPEHTML><html><head><linkhref="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css"rel="stylesheet"><linkrel="stylesheet"type="text/cs......
  • spring mvc注解基本配置
    1.1. 配置web.xml<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xm......
  • sdl2基本使用
    #include<SDL.h>intmain(intargc,char*args[]){  //初始化SDL  if(SDL_Init(SDL_INIT_VIDEO)<0)  {    printf("SDL初始化失败,错误信息:%s\n",SDL_GetError());    return-1;  }  //创建窗口  SDL_Window*window=SDL_Crea......
  • Java使用maven-invoker插件进行maven相关操作
    官方文档地址:https://maven.apache.org/shared/maven-invoker/index.htmlApacheMavenInvoker在许多情况下,工具(包括Maven本身)可能希望在干净的环境中启动Maven构建。为什么呢?也许您希望避免Maven插件产生的副作用污染当前系统环境。也许您想从与当前${user.dir}不同的工作目......
  • 使用SIMCOM的SIM8260C-M2 5G通讯模组与本机网络调试助手通讯
    偶然间得到了一块SIMCOM的底板,上方的模组是SIM8260C-M25G通讯模组,在同事的指导之下,实现了通过5G模组发访问本机网络调试助手的功能。步骤如下: ①、首先是根据官方文档,安装相关驱动; 网址链接:驱动安装②、驱动成功安装后,将底板连接上电脑,在设备管理器中能看到如下驱动; ③......
  • Spring缓存注解的使用与源码分析
    SpringCache提供了一个对缓存使用的抽象,以及大量的实现方便开发者使用。SpringCache主要提供了如下注解:注解说明@Cacheable根据方法的请求参数对其结果进行缓存@CachePut根据方法的请求参数对其结果进行缓存,和@Cacheable不同的是,它每次都会触发真实方法的调用@CacheEvict根据一定......