1、场景再现
当前一个需求,前端不一样的域名去请求同一个后端域名服务,致使cookie共用相互影响。前端
例子:后端
http://m.test1.com、http://m.test2.com、http://m.test3.com跨域
用户访问以上3个连接时,后端请求访问的服务为同一个:http://meng.test.com缓存
解决方案:cookie
跨域过程当中要尽可能避免多对一的映射,采用一对一的方式。dom
将每个前端域名都对应惟一一个后端服务域,分别映射:工具
http://meng.test1.com、http://meng.test2.com、http://meng.test3.comspa
后续:3d
再解决互斥cookie的问题以后,又出现了传多个同名cookie的状况,如图:server
缘由是因为以前 http://m.test2.com、http://m.test3.com 登陆过的cookie仍旧存在本地,当用户再次请求原后端URL
http://meng.test.com 此时会把不一样前端URL所保留的cookie 一并传给后端。
有一点须要注意,设置了widthCredentials为true的请求中会包含远程域的全部cookie,但这些cookie仍然遵循同源策略,因此你是访问不了这些cookie的。
2、Cookie介绍
Cookie是用于维持服务端会话状态的,一般由服务端写入,在后续请求中,供服务端读取。
HTTP请求,Cookie的使用过程:
一、server经过HTTP Response中的"Set-Cookie: header"把cookie发送给client
二、client把cookie经过HTTP Request 中的“Cookie: header”发送给server
三、每次HTTP请求,Cookie都会被发送。
HTTP请求发送Cookies的条件:
一、本地已经缓存有cookies
二、根据请求的URL来匹配cookies的domain、path属性,若是都符合才会发送。
举个例子:访问www.baidu.com时,就不发送www.qq.com的cookies.
Cookies查看:
你们可使用抓包工具,这种工具就很少说,网上搜索出不少。使用这些工具中能够清晰的看到Http Request 中的Cookie, 和Http Response中的cookie
参考文献:HTTP请求中cookies的使用