nodejs获取与设置cookie

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("测试")
})

nodejs获取与设置cookie_第1张图片
nodejs获取与设置cookie_第2张图片
**注意:**如果前端是通过接口调用,记得在配置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");

实现结果:
nodejs获取与设置cookie_第3张图片
我们切换一下端口号和路径:
即使没有这个网页,cookie依然被设置:
nodejs获取与设置cookie_第4张图片

2.设置过期时间-maxAge

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

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

nodejs获取与设置cookie_第5张图片
设置的时间是国际标准时间:2020-12-17 08:06:24
加上8小时即是北京时间:2020-12-17 16:06:24
刚好比我当前时间多10分钟

3.设置域名-domain

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

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

使用localhost访问:
nodejs获取与设置cookie_第6张图片

使用127.0.0.1访问:
nodejs获取与设置cookie_第7张图片

4.设置路径-path

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

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

nodejs获取与设置cookie_第8张图片

nodejs获取与设置cookie_第9张图片

5.设置httpOnly

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

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

nodejs获取与设置cookie_第10张图片

你可能感兴趣的:(Node.js学习笔记,前端社会成长之路,cookie,nodejs,javascript)