Cookie是什么?
- cooklie是浏览器访问服务器后,服务器传给浏览器的一段数据
- 浏览器需要保存这段数据,不得删除
- 此后每次浏览器访问该服务器,都必须带上这段数据
Cookie的作用
1.识别用户身份
- 记录历史
响应头(cookie,cache-control)
JS发送AJAX请求:
myButton.addEventListener('click', (e) =>{
let request = new XMLHttpRequest()
request.open('post','./xxx') //配置request
request.send()
request.onreadystatechange = () =>{
if (request.readyState===4) {
if (request.status >= 200 && request.status<300) {
let string = request.responseText
//把符合 JSON 语法的字符串转换成JS对应的值
let object = window.JSON.parse(string)
//JSON.parse 是浏览器提供的
}
}
}
})
cookie 就像 公园 内 两天时限的门票 (票里有个人信息)
cookie 特点:
- 服务器通过 Set-Cookie 响应头设置 Cookie
- 浏览器得到 Cookie之后,每次请求都要带上 Cookie
- 服务器读取 Cookie 就知道登陆用户的信息(Email)
问题
- 我在 Chrome 登录了得到 Cookie,用 Safari 访问,Safari 会带上 Cookie 吗
no - Cookie 存在哪
Windows 存在 C 盘的一个文件里 - Cookie会被用户篡改吗?
可以,用 Session 来解决这个问题,防止用户篡改 - Cookie 有效期吗?
默认有效期20分钟左右,不同浏览器策略不同
后端可以强制设置有效期,具体语法看 MDN - Cookie 遵守同源策略吗?
也有,不过跟 AJAX 的同源策略稍微有些不同。
当请求 qq.com 下的资源时,浏览器会默认带上 qq.com 对应的 Cookie,不会带上 baidu.com 对应的 Cookie
当请求 v.qq.com 下的资源时,浏览器不仅会带上 v.qq.com 的Cookie,还会带上 qq.com 的 Cookie
另外 Cookie 还可以根据路径做限制,请自行了解,这个功能用得比较少。