wordpress 网站暂停,北京建设建网站,产品推广方案设计,公司做网站入什么科目一、Cookie 简介
● cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域 名的时候共享数据。
● HTTP 是无状态协议。简单地说#xff0c;当你浏览了一个页面#xff0c;然后转到同一个网站的另一个页 面#xff0c;服务器无法认识到这是同一个…一、Cookie 简介
● cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域 名的时候共享数据。
● HTTP 是无状态协议。简单地说当你浏览了一个页面然后转到同一个网站的另一个页 面服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问都是没有任何 关系的。
● Cookie 是一个简单到爆的想法当访问一个页面的时候服务器在下行 HTTP 报文中 命令浏览器存储一个字符串; 浏览器再访问同一个域的时候将把这个字符串携带到上行 HTTP 请求中。第一次访问一个服务器不可能携带 cookie。 必须是服务器得到这次请求 在下行响应报头中携带 cookie 信息此后每一次浏览器往这个服务器发出的请求都会 携带这个 cookie。
二、Cookie 特点
● cookie 保存在浏览器本地 ● 正常设置的 cookie 是不加密的用户可以自由看到; ● 用户可以删除 cookie或者禁用它 ● cookie 可以被篡改 ● cookie 可以用于攻击 ● cookie 存储量很小。未来实际上要被 localStorage 替代但是后者 IE9 兼容。
三、Cookie 的使用
Express 中要使用 Cookie 的话我们需要使用 cookie-parser 模块来实现
安装 cnpm instlal cookie-parser --save引入 var cookieParser require(‘cookie-parser’);设置中间件 app.use(cookieParser());设置 cookie res.cookie(“name”,‘zhangsan’,{maxAge: 900000, httpOnly: true});获取 cookie req.cookies.name
Cookie 属性说明 设置 cookie 的几种方法
res.cookie(rememberme, 1, { maxAge: 900000, httpOnly: true })
res.cookie(name, tobi, { domain: .example.com, path: /admin, secure: true });
res.cookie(rememberme, 1, { expires: new Date(Date.now() 900000), httpOnly: true });获取 cookie req.cookies.name 删除cookie
res.cookie(rememberme, , { expires: new Date(0)});
res.cookie(username,zhangsan,{domain:.ccc.com,maxAge:0,httpOnly:true});四、加密 Cookie
配置中间件的时候需要传参
var cookieParser require(cookie-parser);
app.use(cookieParser(123456));设置 cookie 的时候配置 signed 属性
res.cookie(userinfo,hahaha,{domain:.ccc.com,maxAge:900000,httpOnly:true,signed:true}); signedCookies 调用设置的 cookie
console.log(req.signedCookies)const express require(express)
const ejs require(ejs)
const bodyParser require(body-parser)
var cookieParser require(cookie-parser)
const app new express()// 配置模板引擎
app.engine(html, ejs.__express)
app.set(view engine, html)// 配置静态web目录
app.use(express.static(static))// 配置第三方中间件
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
// 配置cookieParser中间件
app.use(cookieParser(zep))app.get(/, (req, res) {// 设置cookie 如果cookie没有过期的话关闭浏览器后重新打开cookie仍然还在不会被销毁res.cookie(username, 张三, {maxAge: 1000*60*60,signed: true})res.send(首页)
})app.get(/article, (req, res) {// 获取cookielet username req.cookies.usernameconsole.log(username)res.send(新闻页面-- username)
})app.get(/user, (req, res) {// 获取加密的cookielet username req.signedCookies.usernameres.send(用户页面-- username)
})app.get(/login, (req, res) {console.log(req.query)res.render(login.html,{})
})app.post(/doLogin, (req, res) {var body req.bodyconsole.log(body)res.send(执行提交)
})app.listen(3000)