【异常排查】前后端交互格式错误导致传递数据为空

近日,在写博客系统登录页面的时候,测试登录功能发现一直报错,通过排查便可以发现是 前后端数据格式的问题,此问题为很多同学在进行前后端交互传递数据时,经常会犯的错误,特此记录✍

排查过程捕捉

  • 首先我们用浏览器自带的 开发调试工具,若是不会使用抓包工具的同学便可以使用这个工具,非常得方便哦!
  • 然后我们看到,在输入用户名和密码,点击【登录】按钮后向后端的/user/login路由发送了一个请求,通过图示中的Payload我们可以看到,浏览器自带的负载是有数据的。但是来到Preview中却看到,后端发还回来一个 ==参数有误== 的响应,那看到这个响应之后我马上就知道是 前端所传递的用户名或者密码为空导致的!

但是呢从上面的第一张图我们可以看到前端是有传递数据过去的,但为什么后端所接收到的数据为空呢?我们马上来调试观察一下吧:mag:

  • 通过调试我们立马可以观察到,后端所接收到的usernamepasswordnull
  • 但是通过【Fiddler】抓包却可以观察到,前端在发送了POST请求后,其报文中的body是带有数据的,而且是json格式

👉 此时我们可以初步断定是传递过程中的前后端数据交互的问题


接下去我们就用神奇【postman】来造一些数据进行发送吧!

  • 对于 url?后的查询字符串 queryString 我们使用的是 键值对的形式,即这里的username=admin&password=ad123
  • 那么此时我们再到IDEA的调试控制台中来看便可以发现后端接收到的数据不为空了,仔细思考一下是哪里出问题了呢:smile:

异常解决

此时这个问题已经很明显了,其实就出在这个传递的数据格式中

❌ 对于表单的提交格式不应该是下面的json格式

js 复制代码
'Content-Type': 'application/json'

✔ 而应该是下面的x-www-form-urlencoded表单格式

js 复制代码
'Content-Type': 'application/x-www-form-urlencoded'  
  • 那此时在前端中,我们把这个请求头中的【Content-Type】去做一个修改即可
  • 在修改了前端代码后我们再去重启一下项目,重新发送一下请求便可以发现后端成功接收到了前端的发送过来的数据!

小结

从以上的排查过程我们可以看出对于前后端分离的项目,数据格式的统一性是多么的重要,望本文对您有所帮助:rose:

相关推荐
冯志浩17 天前
HarmonyOS - 实现 ArkTS 和 web 页面的数据交互
harmonyos·掘金·金石计划
中杯可乐多加冰17 天前
CloudFront VPC Origins 实践流程深入解析 —— 安全高效架构的实战之道
人工智能·掘金·金石计划
冯志浩21 天前
HarmonyOS - 嵌套类属性状态管理装饰器:ObservedV2 和 Trace
harmonyos·掘金·金石计划
躺平每一天21 天前
用 Swift 的高阶函数 reduce 提升代码可读性
swift·掘金·金石计划
中杯可乐多加冰21 天前
借助 Amazon Q 实现内容分发网络(CDN)CDK 构建的全流程实践
掘金·金石计划·deepseek
冯志浩25 天前
HarmonyOS - 组件外部输入状态管理装饰器:Param
harmonyos·掘金·金石计划
冯志浩1 个月前
HarmonyOS - 组件内部状态管理装饰器:Local
harmonyos·掘金·金石计划
AronTing1 个月前
08-Sentinel 深度解析:从流量控制原理到生产级熔断实战
面试·架构·掘金·金石计划
11在上班1 个月前
CR规范:React 开发者应慎用匿名函数
前端·掘金·金石计划
用户27784491049931 个月前
Python智能分析美元兑人民币汇率:捕捉交易信号与策略建议
python·掘金·金石计划