国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

express如何使用session與cookie的方法

2024-05-06 15:22:15
字體:
供稿:網(wǎng)友

無狀態(tài)的http

我們都知道http的請求和響應式相互獨立的,服務器無法識別兩條http請求是否是同一個用戶發(fā)送的。也就是說服務器端并沒有記錄通信狀態(tài)的能力。我們通常使用cookie和session來確定會話雙方的身份。

cookie

cookie 是從服務器端發(fā)送的,服務器給不同的用戶發(fā)送不同的標識,這個標識表示用戶的身份,服務器通過客戶端發(fā)送的這個標識來識別用戶的身份,從而查詢服務器中的該用戶的相關(guān)數(shù)據(jù),然后發(fā)送到該用戶。

安裝express提供的cookie-parser中間件:

npm i -S cookie-parser

在我們使用的項目頁面模塊中引入 cookie-parser 插件,然后實例化它,如下:

var cookieParser = require('cookie-parser');var cp = cookieParser(secret, options);

它有兩個參數(shù),第一個參數(shù)secret,用它可以對cookie進行簽名,也就是我們常說的cookie加密。它可以是字符串也可以是數(shù)組,如果熟悉加密原理的同學應該知道,這個字符串就是服務器所擁有的密文,第二個參數(shù)options包含如下可選參數(shù):

    path:指定 cookie 影響到的路徑 expires: 指定時間格式 maxAge:指定 cookie 什么時候過期 secure:當 secure 值為 true 時,在 HTTPS 中才有效;反之,cookie 在 HTTP 中是有效。 httpOnly:瀏覽器不允許腳本操作 document.cookie 去更改 cookie。設(shè)置為true可以避免被 xss 攻擊拿到 cookie

參考cookie-parser中的例子,實現(xiàn)一個記住訪問路徑的demo,代碼如下:

var path = require('path');var express = require('express');var cookieParser = require('cookie-parser');var app = express();// 使用 cookieParser 中間件;app.use(cookieParser());// 如果請求中的 cookie 存在 isFirst// 否則,設(shè)置 cookie 字段 isFirst, 并設(shè)置過期時間為10秒app.get('/', function(req, res) {  if (req.cookies.isFirst) {    res.send("再次歡迎訪問");    console.log(req.cookies)  } else {    res.cookie('isFirst', 1, { maxAge: 60 * 1000});    res.send("歡迎第一次訪問");  }});app.listen(3030, function() {  console.log('express start on: ' + 3030)});

cookie-parser 還可以對Cookie數(shù)據(jù)進行加密,也就是我們所說的signedCookies。

signedCookies

實現(xiàn)代碼如下:

var path = require('path');var express = require('express');var cookieParser = require('cookie-parser');var app = express();// 使用 cookieParser 中間件;app.use(cookieParser('my_cookie_secret'));// cookieapp.get('/', function(req, res) {  if (req.signedCookies.isFirst) {    res.send("歡迎再一次訪問");    console.log(req.signedCookies)  } else {    res.cookie('isFirst', 1, { maxAge: 60 * 1000, signed: true});    res.send("歡迎第一次訪問");  }});

從上面的代碼中我們知道cooke-parser的第一個參數(shù)可以指定服務器端的提供的加密密匙,然后我們使用options中的signed配置項可實現(xiàn)加密。雖然這樣相對安全,但是客戶端的Cookie有局限性,在客戶端發(fā)送請求時會增加請求頭部的數(shù)據(jù)量,導致請求速度變慢;另外它不能實現(xiàn)數(shù)據(jù)的共享。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 灵寿县| 昂仁县| 德清县| 永德县| 富蕴县| 大田县| 光泽县| 萍乡市| 宝鸡市| 建德市| 太保市| 长子县| 五河县| 金华市| 农安县| 同仁县| 广河县| 轮台县| 义马市| 乌什县| 富阳市| 阿拉善盟| 台北市| 商城县| 方山县| 湘乡市| 洮南市| 永靖县| 额尔古纳市| 锡林浩特市| 嘉鱼县| 苍梧县| 晋城| 大石桥市| 平阴县| 迁安市| 莱州市| 靖边县| 舞钢市| 宁河县| 九江县|