1 .Cookie是一段小文本信息,伴随着用户请求的页面在浏览器和服务器之间传递。cookie包含每次用户访问站点时web服务器都可以读取的信息。
2 .以后,当该用户再次访问站点中的页面,浏览器会自动在硬盘上查找与该URl相关联的cookie,如果该cookie存在,浏览器便将该cookie与页面请求一起发送到站点,后台服务器便可以确定该用户上次访问站点的日期和时间,可以使用这些显示一些信息。
3 .cookie与网站关联,而不是与特定的页面相关,因此,无论用户请求站点中的哪一个页面,浏览器和服务器都将交换cookie信息
4 .cookie保存在用户本地的机器上,并且按照域名分别保存,网站之间的cookie是不会覆盖的。
5 .禁用了cookie之后,使用url重写技术。
6 .在进行cookie操作的时候,保证cookie个数小于20个,总大小小于4kb.4096字节。
cookie的三个属性
1 .有效性,一旦超过expires设置的有效期,就立刻删除文件
2 .可见性 .path:设置有关的路径,默认为当前文件所在的目domian:设置有关的域,设置可以访问cookie的站点。
3 .cookie的path属性表示当前的cookie可以作用当前网站的哪个路径下面。无论是服务端还是客户端,在获取时优先获取本页路径下的cookies,path=/:将cookie的路径设置为网页顶层目录,这样就可以让该木下的所有网页都能访问这个cookie了。
4 .domain=baidu.com,可以在所有的子域名中访问cookie。例如tieba.baidu.com,mp3.baidu.com。
5 .安全性:cookie在传递时是否采取安全策略,secure.
cookie的组成
1 .name,value,path,domain,secure,expires.
8 .session的唯一表示sessionId保存在cookie中。
9 .如果么有设置cookie的有效期,任然会创建cookie但是不会将其保存在用户的硬盘上,关闭页面就删除。cookie采取的是在客户端保存状态的方案,session采取的是在服务器端保存状态的方案。
10 .分为会话cookie,临时cookie,用户退出浏览器就删除cookie。持久cookie,存储在硬盘上,浏览器退出,计算机重启时他们仍然存在。持久cookie用来维护某个用户会周期访问的站点的配置文件或登录名。唯一区别的就是他们的过期时间。
cookie的属性
1 .domain:获得或设置与cookie有关的域名,可用于限制特定区域的cookie访问。默认设置为创建网页所在的服务器主机名。这个域的服务器都可以使用这个cookie
2 .Expires:获得或设置过期时间,你可以将其设置为一个过去的日期以自动终止或删除cookie
3 .max-age:cookie的生命周期
4 .path:获得或设置cookie的虚拟路径,这一属性允许你限制cookie的范围,也就是说,访问cookie只能限制一个特定的文件夹或者路径访问.一般一个站点中的每个页面都能获得该站点所有的cookie,如果要限制的话,使用path。domain属性设置cookies的域范围。
5 .secure:安全属性。发信号以表示是否使用了ssl来发送cookie值。默认情况下是不安全的,设置为安全。cookie只能在浏览器和服务器通过https或其他安全协议进行访问。
6 .修改cookie:不能直接修改cookie,更改cookie的过程涉及创建一个具有新值的cookie,然后将其发送到浏览器覆盖旧的cookie。
cookie缺陷
1 .安全隐患:第三方web站点使用持久化cookie来跟踪用户就是对cookei最大的滥用,将着各种做法与iP地址和referer首部信息结合在一起,这些音效公司就可以建立起相当精确的用户档案和浏览模式信息。
session
1 .session是服务端技术,利用这个技术,服务器在运行的时候可以为每一个用户的浏览器创建一个session对象,由于session是为用户浏览器独享,所以用户在访问服务器的web资源的时候,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其他web资源时,其他web资源在从各自的seesion中取出数据为用户服务。
cookie跨域访问
1 .同域单点登录:用户在同一加载平台认证之后,使用addCookie,用户权限保存在cookie中,其他平台通过调用getCookie,取得用户信息,这样用户就可以不再受平台限制,实现自由访问各个系统了。
2 .在a系统登录之后,使用js创建一个影藏的iframe,通过iframe的src属性将a域名下的cookie作为get的值传到b的页面上。
3 .cors实现原理:让服务器新增响应头:Access-control-allow-origin《通过http方式来实现资源共享,让每个请求的服务直接返回资源。她使用了http交互方式来确定请求资源是否有资格请求该资源,并且通过设置httpheader来控制访问资源的权限。
4 .cors是不会自动发送cookei的,需要额外限制,服务器通过设置Access-control-allow-credentials来控制是否允许cookie的提交。本地提交请求的时候要设置withCredentials=true.
5 .Nginx反向代理。
6 .jsonP方式请求
7 .superagent:api请求
8 .ajax请求默认不支持携带cookie,所以可以使用jsonp,ajax中加上请求字段 xhrFields:{withCredentials:true}。这样可以携带上cookie。
和cookie有关的字段
1 .cookie:接受到的响应里面有cookie。
2 .set-cookie:
3 .name:
4 .expiress:cookie的有效期,一旦cookie从服务器发送至客户端,服务器端就不存在可以删除cookie的发方法,只能通过覆盖的方法来对cookie进行更改。
5 .path:将服务器上的文件目录作为cookie的适用对象
6 .domain:指定cookie的作用域对象。
7 .secure:只在https单圈的时候才发送cookie
8 .httpOnly:加以限制,使cookie不能被js脚本访问。防止跨站脚本攻击对cookie信息的窃取。
简单会话保持
1 .在某些需要登录的情况下,客户端和服务器之间需要保持一个会话session来记录客户端的各种信息。比如电子商务系统的身份认证。一个服务器和客户要进行好几次的交互才能完成一个请求。所有的操作必须都使用一台服务器操作,会话机制的作用就是在合适的情况下,让客户端发送的请求都转发至后端相同的服务器进行处理。客户端和服务器建立的多个连接都是在一个服务器上处理的。
2 .连接超时,负载均衡会为每一个处于保持状态中的会话设定一个时间值,若从一个会话上时间间隔超过这个时间的话,就会认为这是个新的会话,然后进行负载平衡。
3 .最大并发数:对于同一个连接中的数据包,负载均衡会将其进行转换,转换至后端的固定服务器处理。负载均衡器后一张表来记录这个连接状况,由于这张表示消耗资源的,因此不可能是无限大的,所以扎帐表的大小叫做最大并发连接数,也就是系统能同时容纳的连接数。
其他cookie操作
1 .修改cookie:定义一个重名cookie进行覆盖
2 .删除cookie:给他的expires设置一个过期时间。
3 .同一个域中cookie的数量不能超过20个,整个cookie的大小不能超过4kb.
4 .即使在实现连续的连接,当用户在一段时间内没有提交请求的时候,连接也会自动关闭的,作为web服务器,必须使用一种机制来标识唯一的用户,同时记录该用户的状态。
5 .浏览器总的可以存储300个cookie,每个站点最多存放20个,每个大小为4kb
6 .为什么一个站点需要给一个网站发送多个cookie呢?
7 .web服务器通过在http响应中增加set-cookie响应头将cookie信息发送给浏览器,浏览器则是在通过http请求增加cookie请求头字段将cookie回传给web服务器。
8 .SameSite:用于定义cookie如何开始执行
9 .strict:启用最严格的防护,有能力阻止所有csrf攻击。所有发生的跨域请求都会被组织
10 .Lax:只会在使用危险http方法发送跨域cookie的时候进行阻止,比如post方法
11 .不要讲所有的cookei都设置sameSite属性,不同的cookie有不同的用途,会话cookie设置为Lax,其他可以设置为strict属性。