对于 cookie 的理解
cookie 是服务器提供的一种用于维护会话状态信息的数据,通过服务器发送到浏览器, 浏览器保存在本地,当下一次有同源的请求时,将保存的 cookie 值添加到请求头部, 发送给服务端。这可以用来实现记录用户登录状态等功能。cookie 一般可以存储 4k 大小的数据,并且只能够被同源的网页所共享访问。
服务器端可以使用 Set-Cookie 的响应头部来配置 cookie 信息。一条 cookie 包括了 5 个属性值 expires、domain、path、secure、HttpOnly。其中 expires 指定了 cookie 失效的时间,domain 是域名、path 是路径,domain 和 path 一起限制了 cookie 能够被哪些 url 访问。secure 规定了 cookie 只能在确保安全的情况下传输, HttpOnly 规定了这个 cookie 只能被服务器访问,不能使用 js 脚本访问。
在发生 xhr 的跨域请求的时候,即使是同源下的 cookie,也不会被自动添加到请求头 部,除非显示地规定。
对于 Cookie 隔离的理解
通过使用多个非主要域名来请求静态文件,如果静态文件都放在主域名下,那静态文 件请求的时候带有的 cookie 的数据提交给 server 是非常浪费的,还不如隔离开。因 为 cookie 有域的限制,因此不能跨域提交请求,故使用非主要域名的时候,请求头中 就不会带有 cookie 数据,这样可以降低请求头的大小,降低请求时间,从而达到降低 整体请求延时的目的。同时这种方式不会将 cookie 传入 server,也减少了 server 对 cookie 的处理分析环节,提高了 server 的 http 请求的解析速度。
withCredentials: true, 这个表示每次请求可以携带 cookie 和 session
网友评论