当前位置: 首页 > news >正文

node.js中express框架cookie-parser包设置cookie的问题

后端使用node.js express cookie-parser技术栈设置cookie的时候出现了无法成功设置的问题

前端发送axios请求部分代码:

axios({method: "post",data: {content: remark,relatedArticles: relatedArticleId,userId: userId,userEmail: userEmail,topRemarkId: topRemarkId,priorUserId: priorUserId,priorRemarkId: priorRemarkId,deep: deep,},url: "http://127.0.0.1:3007/api/saveremark",})

后端解决跨域部分代码:

//解决跨域问题
const cors = require("cors");
app.use(cors());

后端设置cookie部分代码:

res.cookie("userId", "demo", {expires: new Date(Date.now()),maxAge: 60 * 60 * 24,httpOnly: true,});

此时发送请求后前端收到的响应头:

Set-Cookie:
userId=demo; Max-Age=3; Path=/; Expires=Thu, 19 Oct 2023 16:05:11 GMT

但查看浏览器application cookie栏中仍没有设置的cookie


解决办法:

先上最终的解决办法:

跨域配置设置为:

//解决跨域问题
const cors = require("cors");
app.use(cors({ credentials: true, origin: true }));

axios请求修改为:

axios({withCredentials: "include",//加上这行代码method: "post",data: {content: remark,relatedArticles: relatedArticleId,userId: userId,userEmail: userEmail,topRemarkId: topRemarkId,priorUserId: priorUserId,priorRemarkId: priorRemarkId,deep: deep,},url: "http://127.0.0.1:3007/api/saveremark",})

解决思路:

发现响应头时间与我的电脑时间(实际时间)不一致,首先认为可能是后端代码中cookie失效时间设置错误

后端设置cookie失效时间代码为:

expires: new Date(Date.now())

使用当前的Date对象设置失效时间,经过打印输出Date.now()之后,发现比实际时间少了八个小时,查询资料得知通过此方法获取到的是UTC时间,具体可阅读http://t.csdnimg.cn/Ir4jR,但之后通过第三方包获取当前时间戳,从而获取当前事件对象,设置为expires值后再次尝试,仍然没有正确在浏览器设置cookie,查询资料得知,与此时间无关,浏览器中的过期时间也是服务器时间,具体可阅读HTML5学习之关于Cookie的expires过期时间无效分析 - 掘金

查询资料后发现是由于浏览器的同源策略问题,以下需知道几个概念:

同源

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。
同源策略是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。 非同源的客户端脚本在没有明确授权的情况下,不能读写对方资源,在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。

非同源受到的限制:
cookie不能读取
dom无法获得
ajax请求不能发送

跨站

两个域名不属于  同站(域名-主机名/IP相同,协议相同)。

跨域

两个域名不属于  同源(域名-主机名/IP相同,端口号相同,协议相同)。

所以为了应对浏览器的同源策略我们要解决跨域问题,所以配置cors为:

cors({ credentials: true, origin: true })
  • credentials: true 表示在跨域请求中,允许携带跨域请求的凭证信息,例如cookie、HTTP认证等。如果你的应用程序需要在跨域请求中使用凭证信息,你需要将credentials设置为true。这样可以确保跨域请求可以携带和接收到凭证信息。

  • origin: true 表示允许跨域请求的源(origin)可以是任意源。如果将origin设置为true,则表示允许来自任意源的跨域请求。这样可以解决跨域请求的问题,使得你的应用程序可以接受来自不同源的请求。

在前端发送axios请求时也要携带cookie信息,以便后端验证,axios配置需要加上:

            withCredentials: "include",

withCredentials 可以设置为以下两个值之一:

  • "include":表示请求应该携带凭证信息(如cookie)。当设置为 "include" 时,浏览器将在请求中包括凭证信息,以便服务器可以识别和验证用户身份。

  • "omit":表示请求不应该携带凭证信息。当设置为 "omit" 时,浏览器将不会在请求中包括凭证信息。

至此,问题解决。

相关文章:

node.js中express框架cookie-parser包设置cookie的问题

后端使用node.js express cookie-parser技术栈设置cookie的时候出现了无法成功设置的问题 前端发送axios请求部分代码: axios({method: "post",data: {content: remark,relatedArticles: relatedArticleId,userId: userId,userEmail: userEmail,topRema…...

Docker命令手册

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 记录平时用的比较多的Docker命令。 docker学习地址 1、docker停止并删除运行的容器 首先查看…...

Selenium+Pytest自动化测试框架详解

前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承;一定的selenium基础——本篇不讲selenium,不会的可以自己去看selenium中文翻译网 一、测试框架简介 测试框架有什么优点 代码复用率高&…...

CentOS7安装部署CDH6.2.1

文章目录 CentOS7安装部署CDH6.2.1一、前言1.简介2.架构3.环境 二、环境准备1.部署服务器2.安装包准备3.修改机器名4.关闭防火墙5.关闭 SELinux6.Hosts文件7.limits文件8.设置swap空间9.关闭透明巨页内存10.免密登录 三、安装CM管理端1.安装第三方依赖包2.安装Oracle的JDK3.安装…...

海思Hi3519DV500边缘计算盒子-英码IVP09A,双核A55 64位处理器

产品简介 IVP09A是英码科技推出的边缘计算智能工作站,搭载双核 Cortex-A55 架构AI 处理器;内置高效的神经网络推理引擎,提供2.5TopsNPU算力;支持多路视频图像识别硬件加速。IVP09A,高效能低成本、稳定易开发、多点布线、联网管控…...

理解数据库

文章目录 一、了解什么是信息1.1 信息和数据1.1.1 信息 (information)1.1.2 数据 (Data) 1.2 数据处理 二、如何描述数据具备的信息2.1 数据库的一些术语: 三、数据模型3.1 概念模型 E-R,是对信息世界的建模…...

RHCE---Shell基础 2

文章目录 目录 文章目录 前言 一.变量 概述 定义 自定义变量 环境变量 概述: 定义环境变量: 位置变量 "$*"会把所有位置参数当成一个整体(或者说当成一个单词 变量的赋值和作用域 read 命令 变量和引号 变量的作用域 变…...

Git报错解决

本篇主要汇总在使用 Git 进行提交和拉取文件时,遇到的问题的解决方案,以便下次查找。 1 关于使用Git出现“git Failed to connect to 127.0.0.1 port xxxx: Connection refused”的问题解决方案 1. 问题描述 在使用 git 拉取、提交代码的时候&#xff…...

TechSmith Camtasia 2023 for Mac 屏幕录像视频录制编辑软件

​ TechSmith Camtasia for Mac 2023中文破解版 是一款专业的屏幕录像视频录制编辑软件,非常容易就可以获得精彩的截屏视频。创建引人注目的培训,演示和演示视频。Camtasia 屏幕录制软件简化,直观,让您看起来像专业人士。利用Camt…...

高效MMdetection(3.1.0)环境安装和训练自己数据集教程(实现于Linux(ubuntu),可在windows尝试)

一、前言 很久没用mmdetection了,作为目标检测常见的几个深度学习框架,mmdetection用的人还是很多的,其中比较吸引人的一点就是mmdetection集成了非常多的算法,对于想做实验对比和算法学习的人来说,基于这个框架可以事…...

软考-入侵检测技术原理与应用

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 by 2023年10月 入侵检测技术概念 入侵检测技术是指一种计算机安全技术,旨在监测计算机系统、…...

openGaussDatakit让运维如丝般顺滑!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...

整理MongoDB文档:身份验证

整理MongoDB文档:身份验证 个人博客,求关注。 文章概叙 本文主要讲MongoDB在单机状态下的账户配置。理解了MongoDB的语法,对于如何配置用户权限会知道怎么配置,但是请注意给谁配置什么权限才是最重要的。 最小权限原则 系统的每个程序或者…...

逐字稿 | 视频理解论文串讲(下)【论文精读】

1 为什么研究者这么想把这个双流网络替换掉,想用3D 卷积神经网络来做? 大家好,上次我们讲完了上半部分,就是 2D 网络和一些双流网络以及。它们的。变体。今天我们就来讲一下下半部分,就是 3D 网络和 video Transformer…...

【C++入门:C++世界的奇幻之旅】

1. 什么是C 2. C发展史 3. C的重要性 4. C关键字 5. 命名空间 6. C输入&输出 7. 缺省参数 8. 函数重载 9. 引用 10. 内联函数 11. auto关键字(C11) 12. 基于范围的for循环(C11) 13. 指针空值---nullptr(C11)05. 1. 什么是C C语言是结构化和模块化的语言&…...

rancher2.6.4配置管理k8s,docker安装

docker快速安装rancher并管理当前k8s集群。 1、拉镜像 docker pull rancher/rancher:v2.6.4 2、启动rancher 启动很慢 --privileged必须拥有root权限,并挂载卷 docker run --privileged -d --restartunless-stopped -p 80:80 -p 443:443 -v /usr/local/docker_vo…...

​​​​​​​Python---练习:使用while嵌套循环打印 9 x 9乘法表

案例 使用while嵌套循环打印 9 x 9乘法表 思考 之前做过打印出三角形,那个三角形是5行的,这次打印9行的三角形。可以先使用while嵌套循环打印9行的直角三角形 相关链接Python---练习:打印直角三角形(利用wihle循环嵌套&#xf…...

仅手机大小!极空间T2随身数据魔盒发布:既是NAS 又是U盘

今天极空间召开新品发布会,带来了极空间T2随身数据魔盒,售价1999元起。 极空间T2随身数据魔盒体积仅手机大小,充电宝可供电。既是个NAS,又是个U盘。 其具备双M.2插槽,可安装两块固态硬盘。4G内存支持docker&#xff0c…...

设计院图纸加密防泄密方案——天锐绿盾加密软件@德人合科技

天锐绿盾是一款专业的企业信息化防泄密软件,主要针对文档全生命周期进行加密保护,包括创建、修改、传输、归档、分发、销毁等全过程。它可以加强外发数据及终端离线的管理,对正常授权外带范围内的数据流程进行规范。设计图纸、文档等成果数据…...

AD9371 官方例程HDL详解之JESD204B TX侧时钟生成 (二)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...