-
path:设置cookie的路径。如果不设置,浏览器会将其自动设置为当前请求的路径。比如,浏览器请求的地址是
/login
,服务器响应了一个set-cookie: a=1
,浏览器会将该cookie的path设置为请求的路径/login
-
domain:设置cookie的域。如果不设置,浏览器会自动将其设置为当前的请求域,比如,浏览器请求的地址是
http://www.yuanjin.tech
,服务器响应了一个set-cookie: a=1
,浏览器会将该cookie的domain设置为请求的域www.yuanjin.tech
- 这里值得注意的是,如果服务器响应了一个无效的域,浏览器是不认的
- 什么是无效的域?就是响应的域连根域都不一样。比如,浏览器请求的域是
yuanjin.tech
,服务器响应的cookie是set-cookie: a=1; domain=baidu.com
,这样的域浏览器是不认的。 - 如果浏览器连这样的情况都允许,就意味着张三的服务器,有权利给用户一个cookie,用于访问李四的服务器,这会造成很多安全性的问题
-
expire:设置cookie的过期时间。这里必须是一个有效的GMT时间,即格林威治标准时间字符串,比如
Fri, 17 Apr 2020 09:35:59 GMT
,表示格林威治时间的2020-04-17 09:35:59
,即北京时间的2020-04-17 17:35:59
。当客户端的时间达到这个时间点后,会自动销毁该cookie。 -
max-age:设置cookie的相对有效期。expire和max-age通常仅设置一个即可。比如设置
max-age
为1000
,浏览器在添加cookie时,会自动设置它的expire
为当前时间加上1000秒,作为过期时间。- 如果不设置expire,又没有设置max-age,则表示会话结束后过期。
- 对于大部分浏览器而言,关闭所有浏览器窗口意味着会话结束。
-
secure:设置cookie是否是安全连接。如果设置了该值,则表示该cookie后续只能随着
https
请求发送。如果不设置,则表示该cookie会随着所有请求发送。 - httponly:设置cookie是否仅能用于传输。如果设置了该值,表示该cookie仅能用于传输,而不允许在客户端通过JS获取,这对防止跨站脚本攻击(XSS)会很有用。
本文截载自袁进博客,详情请查看: http://yuanjin.tech/article/98