概述

cookie是浏览器将数据保存在电脑以便下次发起请求时可以携带的一种技术。cookie分为内存cookie和硬盘cookie,内存cookie由浏览器维护,保存在内存中,当浏览器关闭后就会被删除;硬盘cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,否则cookie不会被删除。

cookie以名/值的形式存储,JavaScript使用document.cookie属性来创建、读取、删除cookie

JavaScript 创建Cookie

创建键为username,值为John Doe的cookie;过期时间(UTC或GMT时间格式)为Thu, 18 Dec 2043 12:00:00 GMT;路径为/

document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";

其中:过期时间表示:该cookie在过期时间之前是有效的,过期之后就会删除;path参数表示:该cookie在那些页面有效,如果设置为/ 则表示cookie在该域名下都有效,如果设置为 /home/ 则表示只有在请求该域名的/home/资源下才有用。

完整示例

将下示代码保存为 index.html 放置到web服务器根目录并访问,即可创建该域名下的cookie

<html>
<head>
<title>cookie</title>
</head>
<body>
<script>
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";
</script>
</body>
</html>

JavaScript读取cookie

var x = document.cookie;

获取到此域名下,此页面(创建时path参数设置)下,所有cookie的键值,以;分割

完整示例

<html>
<head>
<title>cookie</title>
</head>
<body>
<script>
var x = document.cookie;
alert(x);
</script>
</body>
</html>

JavaScript删除cookie

删除cookie的某个键值对,只要设置键的对应expires参数的时间为当前时间之前即可删除该键值对

JavaScript修改cookie

对已存在的cookie键赋值,将会覆盖旧的值。

cookie的全部属性:

1.domain:域,表示当前cookie所属那个域或子域下,默认是当前访问的域名。

2.path:表示cookie所属的路径,默认值此域名下正在请求的路径

3.expire:表示cookie的有效期,默认值仅当前session有效,关闭浏览器则删除cookie

4.secure:表示该cookie只能用https传输

5.httponly:表示此cookie必须用于http或https传输,浏览器脚本不允许访问操作此cookie

总结

1.cookie是http请求和相应头部的一个字段

2.当请求某一域名(比如:https://www.enjoyread.top)时,浏览器会自动加载此域名下对应的cookie,并添加到http请求头中发送给服务端

3.当服务端想将数据保存到cookie,以便浏览器的下次请求携带时,设置http响应头的Set-Cookie字段,浏览器会将服务端想保存的键值对进行保存。

4.当然cookie也可以由上述JavaScript提供的接口访问和修改

5.cookie大小限制在4KB左右

6.http请求中cookie是明文传递的,所以要注意安全性问题

文章目录