OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

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


分享到
分类 JS学习   关键字 Node.JS   发布 ourjs  1479603360159
注意 转载须保留原文链接,译文链接,作者译者等信息。  

 OnceIO是OnceDoc企业内容(网盘)的底层Web框架,它可以实现模板文件、静态文件的全缓存,运行起来完全不需要I/O操作,并且支持客户端缓存优化,GZIP压缩等(只在第一次压缩),拥有非常好的性能,为您节约服务器成本。它的模块化功能,可以让你的Web进行分布式存储,即一个扩展包里即包含前端、后端和数据库定义,只需通过添加/删除目录的方式就可实现功能删减,实现真正的模块化扩展。这里是介绍如何使用OnceIO的一系列文章。

 

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  reqcookies

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

del_cookie  reqcookies

 

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

原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 在 2016 年学 JavaScript 是一种什么样的体验?
  2. 2016年收入最高的5个编程语言,JavaScript最流行,Java和C没在前5
  3. 传言GITHUB正在寻求第二轮融资,或面临估值下降、清算或被微软收购
  4. Java 之父求职被嫌年纪大,硅谷公司现在喜欢“小鲜肉”,不爱“老古董”
  5. NodeJS中的客户端缓存、浏览器缓存、304缓存和OnceIO的缓存控制
  6. NodeJS中的Middleware是什么?在OnceIO中创建和使用中间件
  7. OnceIO(Node.JS)中的模板引擎是什么及MVC设计模式的使用与实现
  8. OnceIO(Node.JS)的静态文件路由(app.static)
  9. OnceIO(NodeJS)中的服务器端缓存、模板预加载和静态资源文件的缓存和Gzip压缩机制
  10. 用OnceIO(NodeJS)搭建简单的web服务器
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. OnceIO(Node.JS)的网页(模板)的引用与嵌套
  2. OnceIO(NodeJS)中的服务器端缓存、模板预加载和静态资源文件的缓存和Gzip压缩机制
  3. NodeJS中的客户端缓存、浏览器缓存、304缓存和OnceIO的缓存控制
  4. OnceIO(Node.JS)的路由(Routing)、路由方法和路由变量
  5. Node.JS的表单提交及OnceIO中接受GET/POST数据的三种方法
  6. OnceIO(Node.JS)中安装、使用和更换doT、EJS、pug等模板引擎
  7. OnceIO(Node.JS)中的模板引擎是什么及MVC设计模式的使用与实现
  8. NodeJS中的Middleware是什么?在OnceIO中创建和使用中间件
  9. 用OnceIO(NodeJS)搭建简单的web服务器
  10. JavaScript函数式编程(一、二、三)

 关键字 - Node.JS
  1. Node.JS中如何判断递归嵌套的所有回调函数已经执行完毕,以读取目录下所有文件为例:计数比Promise方式快将近一倍
  2. node.js中fs.stat里的atime,mtime,ctime,birthtime在debian下的更新规则与区别
  3. NodeJS的DNS使用:域名解析,MX记录查询,SPF反垃圾邮件测试
  4. 在nodejs中使用Redis缓存和查询数据及Session持久化(Express)
  5. 是什么让Node.js比Java更快?为什么NodeJS这么快?
  6. 用纯Node.JS弹出Windows系统消息提示框(MessageBox)
  7. 利用Windows注册表将你的Node.JS程序添加到右健菜单直接运行
  8. Node.js中的通用基础设计模式
  9. Node.js网页抓取:一个最简单的http请求客户端示例(request client)
  10. 6款基于Node.JS的开源内容管理和静态网站生成系统

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号