Cookie和Session

cookie是服务端通过Set-Cookie设置到浏览器中,浏览器保存这个值后,下次在同域的请求时就会自动带上这个cookie(比如一个会话中,保存了用户的登录信息和登录状态,有助于服务端读取,并且返回正确的内容)。存储形式是键值对。Cookie的属性:max-age和expires设置过期时间;Secure只在https的时候发送;设置HttpOnly,则无法通过document.cookie(js的一个api)访问(有助于提高安全性)。

下面通过一个简单的例子说明:创建test.html和serve.js

Cookie和Session_第1张图片
test.html
Cookie和Session_第2张图片
server.js

启动node server.js,打开页面,浏览器中console和network显示如下(这个是通过document.cookie读取打印出来的):

第一次打开网页的network如下(此时request header中没有Cookie):

Cookie和Session_第3张图片

刷新页面,network如下(再次请求,request header中出现Cookie):

Cookie和Session_第4张图片

服务端向浏览器写入cookie可以在浏览器如下查看:

Cookie和Session_第5张图片

同时Set-Cookie可以设置过期时间和多个值,node中是通过设置数组的方式:

Cookie和Session_第6张图片

刷新请求后,network中图如下:

Cookie和Session_第7张图片

可以看出几个存储键值对的不同。15s以后,刷新浏览器,查看network:

Cookie和Session_第8张图片

15s后,request header中不再带上过期的Cookie。注意这里由于后只做了简单的处理,我们再次快速刷新两次,则两个Cookie仍然会带上。

带上HttpOnly则不可用document.cookie访问,更改server.js如下:

Cookie和Session_第9张图片
server.js


这里只读取到了name='simple'。设置HttpOnly是一种最佳实践。

Session 的知识后续总结。。。。。。。。

你可能感兴趣的:(Cookie和Session)