这两天(已经一个多月了),顺丰上有很多关于cookie的问题,也有一个cookie相关的付费问答。那么今天就来到这一段,废话多说,先说一下大概的问题方向。如何跨域携带cookieChrome版本80增强了隐私。SameSite=Lax为默认值,禁止某些场景携带cookies。服务器使用Cookie来识别用户身份并将数据存储在用户本地。它可以解决客户端和服务器之间的会话状态问题。这个状态指的是后端服务的状态,而不是通信协议(HTTP)的状态。一般域名下的cookie最大为4KB。当然,大家不会真的放那么多。名称/值存储的形式为名称=值。Domain/PathscopeDomain是一个受限制的域名,如果设置为www.lilnong.top,则无法获取到cors.lilnong.top。Path是一个受限制的路径。如果设置为/cors,则/api下的请求不会携带cookie。Expires/Max-AgeValidityExpires为当前cookie的过期时间,默认为session级别。Max-Age是当前cookie过期之前的秒数。如果它大于0,则表示计算到期后的秒数。如果等于0,则为会话级别。当浏览器关闭时,它将失效。如果小于0,则表示cookie无效。立即删除Max-Age比Expires具有更高的优先级。设置HttpOnly安全后,无法通过document.cookie等获取客户端脚本,有助于避免XSS攻击。设置Secure安全后,客户端只会在HTTPS协议下发送给服务器。使用HTTPS安全协议可以保护cookies在浏览器和web服务器之间传输过程中不被窃取和篡改。SameSite安全性可以设置发送cookie的情况。这可以防止跨站点请求伪造攻击(CSRF)在跨站点被阻止时发送cookie。SameSite可以设置以下三个值:Strict只允许同站请求携带cookie。比如lilnong.top跳转到www.lilnong.top/cors/,则属于同一个站点。Lax(chrome80后的默认值)允许部分第三方请求场景携带cookies。None(chrome80之前默认)是否跨站点发送cookie。Secure属性必须同时加上,否则无效,也就是说只支持HTTPS。IOS12Safari和一些老版本的Chrome会将SameSite=none识别为SameSite=Strict,所以服务端在发送Set-Cookie响应头时必须进行User-Agent检测,不要向这些浏览器发送SameSite=none属性连接.下来,我们来比较一下跨站点的各种场景。稍后会给出Demo。SceneTypeSceneRemarksStrictLaxNoneLink不发送preload不发送getform不发送postform不发送post,不发送postiframe不post,不postAJAX不post,不postimage不post,不postscriptjsonp查看CookieDeveloperTools->application->Storage->Cookies->选择对应的域名document.cookie只有允许的(HTTPOnly)才能在这里获取。进入本地文件查看。因为它是持久的,所以它存储在磁盘上。一些优化管家可以删除垃圾(缓存文件)。在Cookie响应头中设置Set-Cookie,这是最常用的方法。设置Cookie:key1=value1;路径=路径;域=域;max-age=max-age-in-seconds;expires=date-in-GMTString-格式;安全的;仅http;SameSite=Nonedocument.cookie="key=value"这个是前端设置cookie。概念解释“同站、跨站”和“第一方、第三方”这两个概念是等价的。但是,它与浏览器的同源策略(SOP)中的“同源”和“跨源”是完全不同的概念。同站、跨站同站指的是二级域名+顶级域名。只是平等。比如www.lilnong.top可以解析为主机名.二级域名.顶级域名,所以判断规则比较宽松。eTLD代表有效顶级域名,注册在Mozilla维护的公共后缀列表(PublicSuffixList)中,例如.com、.co.uk、.github.io等。eTLD+1表示有效顶级-一级域名+二级域名,如taobao.com等同源和跨域同源策略同源是指两个URL的协议/主机名/端口一致。域名备注(求https://www.lilnong.top)https://www.lilnong.top(同源)同协议,同主机,同端口http://www.lilnong.top(跨域)不同的协议https://www.lilnong.top:8081(跨域)不同的端口http://www.lilnong.top:8081(跨域)不同的协议和不同的端口https://cors.lilnong.top(跨域)不同主机的总结根据上面关于cookie的介绍,我们可以知道,Chrome在跨站点时,由于SameSite的设置,cookie会导致异常。跨域携带cookie时,还要注意withCredentials的设置。然后清除cookie并重新启动浏览器。微信公众号:前端linong参考文章浏览器系列Cookie和SameSite属性public_suffix_listpublic_suffix_listPUBLICSUFFIXLISTCookieSameSite属性浏览器完全禁用三方cookie时