Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
属性解释
cookie跨域
普通跨域
- 请求方法包括
GET,HEAD,POST - response header里面不能包含cors安全header以外的header。
- Content-Type 只限于
text/plain,multipart/form-data,application/x-www-form-urlencoded
解决办法
- 需要在返回的response header里面带上
Access-Control-Allow-Origin这个heade - 这里要注意,浏览器不是在请求阶段就对请求进行拦截,而是正常发出请求,拿到服务端的响应之后
- 开始查看响应header里面有没有
Access-Control-Allow-Origin这个header,如果没有,响应的结果就不会到js那里去。
非普通跨域
非简单请求,之前允许所有域名跨域访问是被禁止的。所以还是要修改Access-Control-Allow-Origin为特定的请求域名。在开发模式下,可能是http://localhost:3000之类的。
带cookie的跨域
浏览器发起跨域请求的时候,是不会主动带上cookie的,如果一个请求需要cookie,需要开发者设置一个选项,credentials 以fetch api为例
fetch('http://baidu.com:3000', { // ... credentials: true })
sameSite
- sameSite是为了防止csrf攻击而产生的属性
- 由于我们需要在请求中带上cookie,所以需要在set-cookie时将cookie的sameSite设置为none; 又由于将sameSite设置为none时,也需要将Secure设置上,所以请求需要基于https;