OnceIO(Node.JS)服务器端Cookie设置、添加、删除、显示及其实现原理


发布人 Kris Zhang  发布时间 1479562162288
关键字 OnceIO  Node.JS 

 

Cookie 简介

Cookie 意为“甜饼”,是由 W3C 组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Chrome、Netscape、Firefox、Opera等都支持Cookie。

HTTP 是一种无状态的协议,服务器单从网络连接上无从知道客户身份,这给交互式 Web 应用程序的实现带来了阻碍。Cookie 就是用来绕开 HTTP 的无状态性的手段之一。Cookie 实际上是一小段的文本信息。客户端(浏览器)向服务器发送请求,如果 服务器需要记录该用户状态,就会将 Cookie 放在响应头中向客户端浏览器发送。如果浏览器启用了 Cookie,就会把 Cookie 保存起来,并且在再次请求该网站时把请求的网址连同 Cookie 一同提交给服务器。服务器通过读取 Cookie 来辨认用户状态。服务器还可以根据需要修改 Cookie 的内容。

Cookie 工作机制

Cookie 的相关设置

OnceIO 使用 res.cookies 和 req.cookies 对象储存 Cookie;用 res.cookie 函数设置或删除 Cookie,示例代码如下:

//set Cookie
res.cookie('sessionID', 1234, { domain: '', path: '/', httponly: true })

res.cookie 函数的第三个参数是可选的,其中 domain 代表 Cookie 生效的域名,默认为当前域名;path 代表 Cookie 在本地的储存路径,默认为当前目录;httponly 默认值为 true,代表 Cookie 只能在 HTTP 协议中使用,通过 JavaScript 脚本将无法读取到 Cookie,这样能有效地防止 XSS 攻击。

设置Cookie

//set Cookie
app.get('/set_cookie', function(req, res) {
    res.cookie('sessionID', 1234, { domain: '', path: '/', httponly: true })
    //equals to "res.cookie('sessionID', 1234)"
    res.send('<b>res.cookies:</b> ' + res.cookies)
})

运行服务器,在默认端口访问 '/set_cookie' 设置 Cookie,浏览器显示效果如下:

set_cookie 浏览器显示效果

开发人员工具中 Network 栏效果如下,HTTP Header中的'Set-Cookie'即当前设置的 res.cookies:

set_cookie Network 栏效果

删除Cookie

//delete Cookie
app.get('/del_cookie', function(req, res) {
    res.cookie('sessionID', null)
    res.send('<b>res.cookies:</b> ' + res.cookies)
})

访问 '/del_cookie' ,服务器通过把 Cookie 中 key 的 value 设为 null 并且把 Cookie 的过期时间设置过去的一个时间点让 Cookie 立即过期,实现删除 Cookie 的目的。浏览器开发人员工具中 Network 栏效果如下:

del_cookie Network 栏效果

显示Cookie

//display request cookie
app.get('/', function(req, res) {
    res.send('<b>req.cookies:</b> ' + req.cookies)
})

在访问 '/set_cookie' 之后,删除 Cookie 之前访问 '/' ,由于 Cookie 在 localhost:8054 下共享,浏览器显示的 req.cookies 即在 '/set_cookie' 设置的 Cookie:

set_cookie 后 req.cookies

访问 '/del_cookie' 之后,req.cookies 也被删除:

del_cookie 后 req.cookies

 

OnceIO地址:  https://github.com/OnceDoc/onceio

 





回复 (0)
  • #
 近期最热
  1. OnceVI前后端分离的数据可视化报表工具简介
  2. OnceIO(Node.JS)中的模板引擎是什么及MVC设计模式的使用与实现
  3. OnceIO(Node.js)模块拦截与注入:模板文件路由重定向与Model数据改写
  4. OnceIO(Node.JS)的网页(模板)的引用与深层嵌套
  5. OnceIO(Node.JS)模块开发:模块注册、模块路由、静态文件重定向以及如何开发与设计一个功能扩展模块
  6. 传言Github正在寻求第二轮融资,或面临估值下降、清算或被微软收购
  7. 如何搭建个人SASS云盘:30秒快速安装OnceDoc企业私有网盘
  8. 在OnceIO(Node.JS)中用Redis储存Session
  9. 用OnceIO(NodeJS)搭建简单的web服务器
  10. NodeJS教程:基于OnceIO框架实现文件上传和验证
  11. NodeJS中的Middleware是什么?在OnceIO中创建和使用中间件

 相关文章
  1. 用OnceIO(NodeJS)搭建简单的web服务器
  2. 在OnceIO(Node.JS)中用Redis储存Session
  3. OnceIO(Node.js)模块拦截与注入:模板文件路由重定向与Model数据改写
  4. OnceIO(Node.JS)模块开发:模块注册、模块路由、静态文件重定向以及如何开发与设计一个功能扩展模块
  5. 模块安装教程:5秒为OnceDoc扩展新功能
  6. NodeJS教程:基于OnceIO框架实现文件上传和验证
  7. OnceIO(Node.JS)中Session简介与Cookie的关系和使用方法
  8. OnceIO(Node.JS)的网页(模板)的引用与深层嵌套
  9. OnceIO(NodeJS)中的服务器端缓存、模板预加载和静态资源文件的缓存和Gzip压缩机制
  10. NodeJS中的客户端缓存、浏览器缓存、304缓存和OnceIO的缓存控制

 关键字
OnceIO Node.JS

 关注
关注
OnceOA

OnceOA