Cookie如何设置
一句话概括,Cookie是通过HTTP请求头Set-Cookie来进行设置。
服务器如果希望在浏览器保存 Cookie,就要在 HTTP 回应的头信息里面,放置一个Set-Cookie字段。
Set-Cookie:key=value
HTTP 响应可以包含多个Set-Cookie字段,即在浏览器生成多个 Cookie。浏览器接收到的响应如下:
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie:key1=value1
Set-Cookie:key2=value2
[page content]
设置后当请求发送到浏览器,浏览器就会根据请求头来设置cookie
Cookie的过期时间
若在无设置的情况的情况下,cookie只存在于当前session中,若浏览器关闭,session结束后,cookie也随之被删除。
- expires
可以通过cookie的expires
属性来设置cookie的过期时间。
expires
属性的值为一个 格林威治标准时间 ,若cookie保存超过该时间,则删除该cookie。
举例说明:
Set-Cookie: a=2; Expires=Tue, 1 Oct 2019 00:00:00 GMT;
//值为a=2的cookie将在(格林威治时间)2019年10月1日0点后到期
- maxAge
除了设置expires
属性之外,还能通过maxAge
属性来设置过期时间。
maxAge
属性的值是秒数,若cookie保存超过这个秒数期限,则删除该cookie。
举例说明:
Set-Cookie: a=2; maxAge=31536000;
//值为a=2的cookie将在31536000秒(一年)后到期
Cookie如何删除
上文说到Cookie的过期时间,当超过所设置的时间后,cookie被删除,则可以通过设置时间的方式来达到删除Cookie的目的。
- 通过设置
expires
属性来删除Cookie
expires
属性对应的值是一个格林威治标准时间,可以使用赋值当前时间之前的值来删除cookie。
代码如下
document.cookie = "a=; expires="+new.date(0).toUTCString();
new.date(0).toUTCString() === "Thu, 01 Jan 1970 00:00:00 GMT" //ture
- 通过设置
maxAge
属性来删除Cookie
maxAge
属性对应的值是一个秒数,可通过将值设置为0的方法来立即删除cookie。
代码如下
document.cookie = "a=; maxAge=0;"
注:若值为负数,则cookie会在浏览器关闭后被删除。