nodejs获取与设置cookie

  • 一、获取cookie
  • 1.插件下载
  • 获取cookie
  • 二、设置cookie
  • 1.基础设置
  • 2.设置过期时间-maxAge
  • 3.设置域名-domain
  • 4.设置路径-path
  • 5.设置httpOnly


一、获取cookie

1.插件下载

在nodejs下不太好直接获取到request里面的cookie,需要安装cookie-parser插件来获取
安装:

npm install cookie-parser --save

使用:

const express = require('express')
const app = express();
const cookieParser = require('cookie-parser');
app.use(cookieParser());

获取cookie

当我们使用了cookieParser之后,就能直接在request中取出cookie了
具体实现:

app.get('/views', (req, res) => {
  console.log(req.cookies);
  res.send("测试")
})

nodes获取网址的ip node获取cookie_nodejs


nodes获取网址的ip node获取cookie_javascript_02


**注意:**如果前端是通过接口调用,记得在配置ajax时设置允许携带接口访问

jQuery设置:

$.ajax({
      url: "http://localhost:3010/login/userLogin",
      type: "POST",
      dataType: "json",
      data: JSON.stringify(formData),
      xhrFields: {
        withCredentials: true //允许跨域带Cookie
      },
      headers:{
        Accept: "application/json" ,
        "Content-Type" : "application/json"
      },
      success: function(result){
        console.log('success')
      }
    });

axios设置:

import axios from "axios";
axios.defaults.withCredentials = true; // 允许请求的时候带上cookie

二、设置cookie

设置cookie不需要插件也可进行,但是如果是通过接口调用,不仅前端需设置允许携带cookie,也要在后端配置允许跨域
例如:

// 如果前端允许传递cookie,加上这一句
  res.header("Access-Control-Allow-Credentials", "true");

语法:
res.cookie(key, value, options)
key:cookie名称
value:cookie的值
options:其他配置项(对象形式)可选

具体代码:

const express = require('express')
const app = express();
app.get('/login', (req, res) => {
  res.cookie("token", "123456789");
  res.send('登录')
})

1.基础设置

/*
 * 在默认域名下设置的cookie(项目所监听的域名,本地则默认是localhost),在localhost下的所有路由可以访问到
 * */
 res.cookie("token", "123456789");

实现结果:

nodes获取网址的ip node获取cookie_ios_03


我们切换一下端口号和路径:

即使没有这个网页,cookie依然被设置:

nodes获取网址的ip node获取cookie_ios_04

2.设置过期时间-maxAge

在options中配置maxAge属性即可,值为数字,以毫秒为单位

res.cookie("token", "123456789", {maxAge: 600000});

nodes获取网址的ip node获取cookie_javascript_05


设置的时间是国际标准时间:2020-12-17 08:06:24

加上8小时即是北京时间:2020-12-17 16:06:24

刚好比我当前时间多10分钟

3.设置域名-domain

domain可以设置域名:类似 net,也可以设置IP地址:类似 127.0.0.1。

res.cookie("token", "123456789", {domain:'127.0.0.1',maxAge: 600000});

使用localhost访问:

nodes获取网址的ip node获取cookie_cookie_06

使用127.0.0.1访问:

nodes获取网址的ip node获取cookie_cookie_07

4.设置路径-path

设置路径之后,只有当前域名下的对应路径才能获取到cookie

res.cookie("token", "123456789", {domain:'127.0.0.1',maxAge: 600000, path:'/views'});

nodes获取网址的ip node获取cookie_cookie_08

nodes获取网址的ip node获取cookie_nodejs_09

5.设置httpOnly

如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取以及修改cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性。

res.cookie("token", "123456789", {domain:'localhost',maxAge: 600000, path:'/views', httpOnly: true});

nodes获取网址的ip node获取cookie_cookie_10