我用node .js的express框架写的登录接口,发现postman可以调通,但是vue3前端报错
在这里插入图片描述
vue3
在这里插入图片描述
我发现是我后端node.js的app.js入口文件中配置的解析前端参数的解析中间件和前端请求头中的Content-Type配置不一致的原因
解决方案
因为我后端配置解析表单数据的中间件是express.urlencoded({ extended: false }),只能解析application/ x-www-from-urlencoded 格式的表单数据
在这里插入图片描述
所以第一种方法修改前端,后端不变
前端修改
登录接口修改添加这2个,如果你所有接口都是这种数据解析
把 “Content-Type”: “application/x-www-form-urlencoded”, 加载请求拦截器里也行,我这里是只说登录单个接口,所以把 “Content-Type”: "application/x-www-form-urlencoded"这个单独加到了登录里面为了测试
在这里插入图片描述
这是我的请求拦截器和相应拦截器的配置

import axios from 'axios'const http = axios.create({baseURL: 'http://localhost:5000', // 根据你的 Node 服务地址修改timeout: 10000,
})// 请求拦截器
http.interceptors.request.use(config => {// 可以在这里添加 token 等const token = localStorage.getItem('token')if (token) {config.headers.Authorization = `${token}`}// 确保已有 Authorization 头不被覆盖// if (token && !config.headers.Authorization) {// config.headers.Authorization = `${token}`;//}// // 如果请求体是对象且尚未设置 Content-Type// if (config.data && typeof config.data === 'object' &&//   !config.headers['Content-Type']) {//   config.//   headers['Content-Type'] = 'application/json;charset=utf-8';// }return config
}, error => {return Promise.reject(error)
})// 响应拦截器
http.interceptors.response.use(response => {console.log("请求成功:", response.config.url, response.data);// 解析JSON数据const data = typeof response.data === 'string' ?JSON.parse(response.data) :response.data;if (data.status && data.status !== 0) { // 0表示成功return Promise.reject(data);}return data;
}, error => {return Promise.reject(error)
})export default http

结果
在这里插入图片描述
第二种方法修改后端的中间件,前端不变
给后端代码添加
app.js文件中添加express.json解析application/json的中间件,前端代码不变

前端代码 headers[‘Content-Type’] = ‘application/json;charset=utf-8’;可以加可以不加,因为你发送的是一个 JavaScript 对象(credentials),
axios 会自动将请求头 Content-Type 设置为 application/json
使用 JSON.stringify(credentials) 转换请求体
在这里插入图片描述
结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88471.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88471.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88471.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《月亮与六便士》:天才的背叛与凡人救赎的残酷辩证法

当满地六便士成了庸人的火葬场​​毛姆笔下的斯特里克兰德,是一把捅穿中产幻梦的利刃。这个抛妻弃子、背叛友人的证券经纪人,在伦敦客厅的茶香与银勺碰撞声中,突然听见了远方的惊雷——“我必须画画”。如书中所言:​​“在满地都…

vue2往vue3升级需要注意的点(个人建议非必要别直接升级)

将 Vue 2 项目升级到 Vue 3 的过程中,需要重点关注以下几个难点和关键点: 建议小项目直接用vue3重写更快,bug更少 文章目录1. **Composition API 的学习与应用**2. **全局 API 的变更**3. **模板语法的兼容性变化**4. **组件选项和生命周期的…

聚焦数据资源建设与应用,浙江省质科院赴景联文科技调研交流

7月10日上午,浙江省质科院标准化中心副主任蒋建平、应珊婷等一行领导带队莅临景联文科技调研指导工作。双方围绕工业数据展开深度交流。座谈会上,景联文科技详细汇报了数据资源建设与应用方面的成果与规划,介绍了公共数据授权运营与对外合作的…

【Linux】系统引导修复

目录 开机引导过程 一.通电 二.BIOS环境检测 三.磁盘引导阶段 四.文件引导阶段 自动引导配置文件丢失修复 内核参数文件丢失修复 内核镜像文件丢失修复 内核初始化文件丢失修复 boot目录误删丢失修复 开机引导过程 磁盘引导阶段 /boot/grub2/grub.cfg #读取自动引…

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析 编程题 第一题 判断是否存在重复的子序列 题目描述 从m 个字符中选取字符,生成n 个符号的序列,使得其中没有2 个相邻的子序列相同。 如从1,2,3,生成长度为5 的序列,序列“12321”是合格的,而“12323”和“12123”…

MySQL5.78.0锁表确认及解除锁表完全指南

目录 一、MySQL锁机制基础 1.1 锁的分类与作用 1.2 关键锁类型详解 二、锁表的常见原因与风险 2.1 引发锁表的典型场景 2.2 锁表的业务影响 三、锁表状态确认方法 3.1 基础工具:SHOW PROCESSLIST 3.2 MySQL 8.0锁信息查询(推荐) 3.2…

springboot生成pdf方案之dot/html/图片转pdf三种方式

文章目录pdf生成方案dot转pdfhtml转pdfopenhtmltopdfaspose-pdf实践playwright实践图片转pdfApache PDFBox实践框架场景匹配后记前言:随着客户对报告审美的提升,需求也越来越五彩斑斓~ 原有的dot模板已经满足不了他们了!这篇文章主打列出各种…

前端开发—全栈开发

全栈开发者在面试前端或全栈岗位时,自我介绍需要巧妙融合“技术广度”与“岗位针对性”,避免成为泛泛而谈的“样样通样样松”。以下是结合面试官关注点和全栈特性的专业介绍策略:🧠 一、自我介绍的核心理念 突出全栈优势&#xff…

Redis生产环境过期策略配置指南:务实落地,避免踩坑

在生产环境中合理配置Redis过期策略是保障系统稳定性和内存效率的关键。以下配置建议基于实战经验,避免理论堆砌,直击核心要点:一、核心策略配置:惰性删除 定期删除(默认已启用)无需额外配置:R…

Ubuntu 20.04 安装 Node.js 20.x、npm、cnpm 和 pnpm 完整指南

🌐 Ubuntu 20.04 安装 Node.js 20.x、npm、cnpm 和 pnpm 完整指南 🚀 在本文中,我们将介绍如何在 Ubuntu 20.04 上安装 Node.js 20.x,以及如何安装 npm、cnpm 和 pnpm 来提高开发效率 ⚡。1️⃣ 安装 Node.js 20.x 为了确保使用最…

【时时三省】(C语言基础)通过指针引用数组元素

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省引用一个数组元素,可以用下面两种方法:( 1 )下标法,如a[i]形式;( 2 )指针法,如* ( a i )或* ( p i )。其中a是数组名,p…

Guava LoadingCache

LoadingCache 是 Google Guava 库提供的一个高级缓存实现,它通过自动加载机制简化了缓存使用模式。核心特性自动加载机制当缓存未命中时,自动调用指定的 CacheLoader 加载数据线程安全:并发请求下,相同key只会加载一次灵活的过期策…

基于LSTM-GRU模型的黄金价格动态监测:关税政策与美指的量化关联研究

摘要:本文通过BERT-Large模型对关税政策进行语义解析,结合LSTM-GRU混合模型、DCC-GARCH动态相关性模型及蒙特卡洛情景分析,量化解析7月11日黄金价格异动背后的三大驱动因子——政策冲击、美元指数压制与美联储政策不确定性,提供AI…

V少JS基础班之第七弹

文章目录一、 前言二、本节涉及知识点三、重点内容1、prototype2、constructor3、中场回顾&总结4、__ proto__5、第二次中场回顾&总结6、原型链6、第三次中场回顾&总结7、原型链中的奇点一、 前言 第七弹内容是原型链。网络上原型链的资料很多。但是我看了很多篇&…

Nuxt3自动打包及自动修改端口号脚本

Nuxt3自动打包及自动修改端口号脚本技术文章大纲 背景与需求 Nuxt3作为现代Vue框架,开发中常需处理打包部署和端口配置问题。自动化脚本可提升效率,减少手动操作错误。 实现自动打包 利用Nuxt3内置命令结合Node.js脚本实现自动化构建。通过npm run build…

红海云国资案例之多层级工贸集团的一体化HR平台建设实战

在中国经济迈向高质量发展的进程中,国有企业作为重要的经济支柱和行业引领者,正面临着数字化转型的深刻变革。F集团作为G市首家实现工贸一体化运营的大型企业,位列中国轻工业百强,其在人力资源数字化转型中的探索和实践&#xff0…

TCP详解——流量控制、滑动窗口

目录 流量控制 滑动窗口 丢包重传 情况一:数据到达,应答丢失 情况二:数据包丢失 流量控制 TCP协议会根据接收端的缓冲区大小来调整发送速度,剩余空间多则发送速度快,否则降低发送速度 接收端将⾃⼰可以接收的缓…

C#高级特性面试问题的详细分析,涵盖核心概念、应用场景和最佳实践

序列化与反序列化 1. 什么是序列化和反序列化?用途是什么? // 序列化示例 Person person new Person { Name "Alice", Age 30 }; string json JsonSerializer.Serialize(person); // 序列化为JSON// 反序列化示例 Person deserialized Js…

【电脑】内存的基础知识

内存(Memory)是计算机中用于临时存储数据和程序的地方,它直接影响到系统的运行速度和性能。以下是关于内存的详细知识:1. 内存类型常见的内存类型包括以下几个主要种类:SDRAM (Synchronous Dynamic Random Access Memo…

Java---IDEA

IDEA概述 IDEA:全称Intellij IDEA,是用于Java语言开发的集成开发环境 集成环境:把代码编写,编译,运行,调试等多种功能综合到一起的开发工具 下载与安装 下载:IntelliJ IDEA – the IDE for …