日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Express Cookie 的基本使用

發(fā)布時(shí)間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Express Cookie 的基本使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Cookie 簡(jiǎn)介

● cookie 是存儲(chǔ)于訪問(wèn)者的計(jì)算機(jī)中的變量??梢宰屛覀冇猛粋€(gè)瀏覽器訪問(wèn)同一個(gè)域 名的時(shí)候共享數(shù)據(jù)。

● HTTP 是無(wú)狀態(tài)協(xié)議。簡(jiǎn)單地說(shuō),當(dāng)你瀏覽了一個(gè)頁(yè)面,然后轉(zhuǎn)到同一個(gè)網(wǎng)站的另一個(gè)頁(yè) 面,服務(wù)器無(wú)法認(rèn)識(shí)到這是同一個(gè)瀏覽器在訪問(wèn)同一個(gè)網(wǎng)站。每一次的訪問(wèn),都是沒(méi)有任何 關(guān)系的。

● Cookie 是一個(gè)簡(jiǎn)單到爆的想法:當(dāng)訪問(wèn)一個(gè)頁(yè)面的時(shí)候,服務(wù)器在下行 HTTP 報(bào)文中, 命令瀏覽器存儲(chǔ)一個(gè)字符串; 瀏覽器再訪問(wèn)同一個(gè)域的時(shí)候,將把這個(gè)字符串?dāng)y帶到上行 HTTP 請(qǐng)求中。第一次訪問(wèn)一個(gè)服務(wù)器,不可能攜帶 cookie。 必須是服務(wù)器得到這次請(qǐng)求, 在下行響應(yīng)報(bào)頭中,攜帶 cookie 信息,此后每一次瀏覽器往這個(gè)服務(wù)器發(fā)出的請(qǐng)求,都會(huì) 攜帶這個(gè) cookie。

二、Cookie 特點(diǎn)

● cookie 保存在瀏覽器本地
● 正常設(shè)置的 cookie 是不加密的,用戶(hù)可以自由看到;
● 用戶(hù)可以刪除 cookie,或者禁用它
● cookie 可以被篡改
● cookie 可以用于攻擊
● cookie 存儲(chǔ)量很小。未來(lái)實(shí)際上要被 localStorage 替代,但是后者 IE9 兼容。

三、Cookie 的使用

Express 中要使用 Cookie 的話(huà),我們需要使用 cookie-parser 模塊來(lái)實(shí)現(xiàn)

  • 安裝 cnpm instlal cookie-parser --save
  • 引入
    var cookieParser = require(‘cookie-parser’);
  • 設(shè)置中間件
    app.use(cookieParser());
  • 設(shè)置
    cookie res.cookie(“name”,‘zhangsan’,{maxAge: 900000, httpOnly: true});
  • 獲取
    cookie req.cookies.name
  • Cookie 屬性說(shuō)明

    設(shè)置 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

  • 配置中間件的時(shí)候需要傳參
  • var cookieParser = require('cookie-parser'); app.use(cookieParser('123456'));
  • 設(shè)置 cookie 的時(shí)候配置 signed 屬性
  • res.cookie('userinfo','hahaha',{domain:'.ccc.com',maxAge:900000,httpOnly:true,signed:true});
  • signedCookies 調(diào)用設(shè)置的 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")// 配置靜態(tài)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)=> {// 設(shè)置cookie 如果cookie沒(méi)有過(guò)期的話(huà),關(guān)閉瀏覽器后重新打開(kāi),cookie仍然還在,不會(huì)被銷(xiāo)毀res.cookie("username", "張三", {maxAge: 1000*60*60,signed: true})res.send("首頁(yè)") })app.get("/article", (req, res) => {// 獲取cookielet username = req.cookies.usernameconsole.log(username)res.send("新聞頁(yè)面--" + username) })app.get("/user", (req, res) => {// 獲取加密的cookielet username = req.signedCookies.usernameres.send("用戶(hù)頁(yè)面--" + 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("執(zhí)行提交") })app.listen(3000)

    總結(jié)

    以上是生活随笔為你收集整理的Express Cookie 的基本使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。