cookie是服务端通过Set-Cookie设置到浏览器中,浏览器保存这个值后,下次在同域的请求时就会自动带上这个cookie(比如一个会话中,保存了用户的登录信息和登录状态,有助于服务端读取,并且返回正确的内容)。存储形式是键值对。Cookie的属性:max-age和expires设置过期时间;Secure只在https的时候发送;设置HttpOnly,则无法通过document.cookie(js的一个api)访问(有助于提高安全性)。
下面通过一个简单的例子说明:创建test.html和serve.js
test.html server.js启动node server.js,打开页面,浏览器中console和network显示如下(这个是通过document.cookie读取打印出来的):
第一次打开网页的network如下(此时request header中没有Cookie):
刷新页面,network如下(再次请求,request header中出现Cookie):
服务端向浏览器写入cookie可以在浏览器如下查看:
同时Set-Cookie可以设置过期时间和多个值,node中是通过设置数组的方式:
刷新请求后,network中图如下:
可以看出几个存储键值对的不同。15s以后,刷新浏览器,查看network:
15s后,request header中不再带上过期的Cookie。注意这里由于后只做了简单的处理,我们再次快速刷新两次,则两个Cookie仍然会带上。
带上HttpOnly则不可用document.cookie访问,更改server.js如下:
server.js这里只读取到了name='simple'。设置HttpOnly是一种最佳实践。
Session 的知识后续总结。。。。。。。。
网友评论