Axios发送POST请求报错,后端接收不到参数响应404

vue axios 设置proxyTable跨域后访问接口404 描述 我是用的是本地IP启动我的项目 我想访问的接口是 http://192.168.100.217:2000/api/OrganizationManager/Get_Load 这是我proxy的配置代码 proxyTable: { '/api': { target: 'http://192.168.100.217:2000', changeOrigin: true, pathRewrite: { 阅读详情
AI摘要

本文解决Axios发送POST请求时遇到的404问题,详细分析了前端与后端数据格式不匹配导致的错误,并提供了四种解决方案,包括使用qs库转换参数、URLSearchParams、配置transformRequest及直接传递字符串。

问题说明

我们在项目中通常都会使用到封装好的axios来发送请求,当我们在发送POST请求时结果响应404。
使用接口测试工具postman、yapi等都可以正常响应。
报错信息如下:
响应结果
请求头:
请求信息


造成问题的原因 – 请求携带的数据格式和后端解析数据格式不一致

后端解析:接口使用 java spring mvc,注解使用了 @RequestParam 或 @RequestBody

RequestParam:在这种情况下只能从请求的地址中获取参数,也就是只能从 username=zhangsan&password=123 这种字符串中解析出参数。
RequestBody:这种情况下只能从请求体的 form-data 中获取数据,axios默认请求体为 Request Payload

前端请求:看上图的请求头信息中的 Content-Type:application/json;charset=UTF-8,

我们在使用axios发送post请求时,一般都是以对象的形式发送请求
发送axios请求体的格式为 Request Payload 。
在这里插入图片描述
在发送ajax请求时请求体为 form-data
在这里插入图片描述
下图为axios源码信息,axios库默认会帮我们转换请求和响应,并自动转换为 JSON 数据
axios/default.js

这就造成了前端发送json形式的请求,而后端从请求的地址中解析字符串。两种数据格式不一致


解决

1. 将参数转换为query参数,axios库包含了qs 直接引入

import service from '@/utils/request'
import qs from 'qs'

export function imgInfo (data, params) {
  return service({
    url: '/server/show',
    method: 'post',
    data: qs.stringify(data),
    params
  })
}

2. 使用URLSearchParams 传递参数。

// URLSearchParams有兼容性问题 ~~不兼容IE和Edge~~ ,支持大部分浏览器

const params = new URLSearchParams()
params.append('username', 'zhangsan')
params.append('password', '123')
axios.post({
	url: '/server/show',
	data: params
}

3. 配置 transformRequest axios配置项

// 在axios配置项中有 `transformRequest ` ,我们可以添加其配置对数据进行转换。

import service from '@/utils/request'
import qs from 'qs'

export function imgInfo (data) {
  return service({
    url: '/server/show',
    method: 'post',
    transformRequest: [function (data) {
	    // 对 data 进行任意转换处理
	    return qs.stringify(data)
    }],
 	    data
  })
}

4. 传递字符串

axios.post('/server/show',"userName='zhangsan'&password='123'");
js将请求参数转化为对象以及将对象转化为query字符串 阅读详情

相关推荐

JSAPI微信支付(小程序)V3版本JAVA代码实战源码

1.1、商户通过JSAPI/小程序下单接口获取到发起支付的必要参数prepay_id后,再通过微信小程序调起微信支付收银台JSAPI/小程序下单_JSAPI支付|微信支付商户文档中心1.3、微信H5发起类似,结合文档,细微调整,前端返回类似,参考文档修改为微信内置浏览器调起支付即可。

java web 707

post 请求后台已执行但是返回 404

先说解决办法: 接口上应该加@ResponseBody注解 复现步骤及说明: 开发中遇到一个问题,前端提交post请求后,后端能接收到请求并正常执行,但浏览器却显示404: 前端代码: 页面 点击提交后,后端控制台: 而浏览器: ...

qq_43564857的博客 6470

Matlab激活失败?手把手教你解决License checkout failed问题(附详细截图)

本文针对Matlab激活后出现“License checkout failed”错误的常见问题,提供了详细的解决方案。核心在于精准定位并正确填写Windows系统用户名,而非计算机名或账户全名。文章通过分步截图和命令指引,手把手教你使用`whoami`命令获取正确信息,并重新运行激活程序,从根本上解决因用户名填写错误导致的许可检查失败问题。

weixin_29062823的博客 574

(已解决)axios使用get成功,但使用 post 404,原因?

axios get请求可以,post请求404,真的让人痛苦,思考的过程是快乐的,哈哈

qbk11lus的博客 3923

高速接口电平标准互连设计:LVPECL、PECL与LVDS的实战解析

本文深入解析了LVPECL、PECL与LVDS三种高速接口电平标准的互连设计实战。针对信号共模电压、阻抗匹配等核心差异,详细对比了直流耦合与交流耦合两种主流方案,并提供了电阻网络计算、布局布线要点及光模块等特殊场景下的选型建议,帮助工程师解决高速信号间的“翻译”难题,确保信号完整性。

weixin_29198045的博客 537

RLC电阻电容电感基础知识——电感篇

电感 等效电路 电感线圈由铜导线绕制,等效电路如图所示。 寄生电阻RS,包括了绕线电阻、引脚串联电阻以及磁芯损耗电阻三部分组成,其中绕线电阻与线径、长度、铜线电阻率有关;引脚电阻与引线长短、粗细有关;磁芯损耗电阻与磁芯材料特性有关,显然磁芯损耗电阻还与工作频率有关.寄生电容C主要是绕线圈与圈之间的杂散电容(为PF级),与绕线工艺有关。 等效导纳 显然: (1)当角频率ω(频率f)较小时,呈电感性. (2)当角频率ω等于ω0时,导纳Y虚部为0,呈现电阻性,即发生共振。令导纳Y虚部为0,即可求出共振角频率ω

azj2019的博客 1万+

axios发送post报错404问题

axios发送post报错404问题 第一次写前端,用axios发送http请求,发现报错,状态码为404找不到页面,前端代码如下 methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { //向路由http://localhost:8080/login发送post请求 this.$axios.post('

小白的博客 1万+

HarmonyOS ArkTS开发实战:用Axios封装一个通用的网络请求工具类(附完整代码)

本文详细介绍了如何在HarmonyOS ArkTS开发中利用Axios封装一个通用的网络请求工具类,涵盖架构设计、核心模块实现、UI状态联动及高级功能扩展。通过单例控制器、拦截器链配置和Token自动刷新机制,提升网络请求的稳定性和可维护性,适用于各类HarmonyOS应用开发场景。

weixin_30772105的博客 491

vue使用axios发送post,后端无法接收问题

关乎vue的axios问题 最初用axios作为一个post发送,发送代码如下: axiosN .post(path,data) .then(response => { console.log(response.data) this.dialogFormVisible = false this.$notify({ title: "提示", message: response.data.msg, type: response.dat

Touale的博客 1003

UBUNTU使用RTL8811CU网卡(包含树莓派)

下载驱动 从绿联中下载:链接 下载解压后,chmod Linux文件夹 sudo chmod -R 777 ./Linux/ 修改系统的BOOT Secure为disable,参考链接:链接 sudo apt install mokutil sudo mokutil --disable-validation 重启电脑后,按照提示选择change secure boot state,并输入对应的字母(并不是全部密码,而是第几个),选择disable即可 进入Linux文件夹,运行命令 ..

Hot_Ant的博客 6246

作为一名爬虫人如何实现千万级数据爬取?

爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro

吴秋霖的博客 1万+

springboot接收不到vue发送axios请求中的数据

但由于前端用params包裹起来了,后端接收的确是params内部的username和password,所以前后端对应不上,导致前端的post请求找不到对应的接口,找不到对应的接口所以报了404错误。表面上看是跨域问题,但是我换一个get方法却可以正常响应,不会报跨域问题,查询资料发现,有时候会因为bad request导致程序以为是跨域的问题,引起跨域问题的报错。或者说,两边都没有问题,只是没有使用同一种格式,这才是问题所在。当时的前端写的,是传出去了参数的,但注意这里的参数最外层是params。

STATICHIT静砸的博客 1822

2021.07.05【R语言】丨预测lncRNA并绘制venn图

目录摘要环境与方法依赖工具预测工具绘制工具使用命令预测lncRNA统计noncoding_ID绘制Venn图结果展示总结 摘要 接到一个单样品测lncRNA数据的项目,正好拿来练练手,梳理一下lncRNA流程。这里记录预测lncRNA并生成venn图的过程 环境与方法 R version 3.6.3 (2020-02-29) 依赖工具 预测工具 CPC2 CNCI Pfam CPAT 绘制工具 R:VennDiagram 使用命令 预测lncRNA CPC2 #更换env conda activate py

2035

axios 跨域请求详解

写这篇文章的背景是因为之前遇到的,在跨域的情况下通过 axios 发起的 get 请求正常,post 请求会在正式请求发送之前先发送一个 opstions 请求,而后端接口没有兼容 options,导致 404 的情况。 而在解决这个问题时带着好奇心顺带查了一下,给自己补充了些知识点。 跨域请求分两种 简单讲,从 JavaScript 代码发起的 XMLHttpRequest 请求可以分为两种: ...

weixin_33991418的博客 3484

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

axios访问后台404_使用 axios 后台无法接收到数据的解决方案

如果想看排错思路的,可以看完踩坑经历,想直接要结果的,可以直接看解决方案。踩坑经历最近我在使用 SSM + Vue 做自己的小项目。Dao层 和 Service层 之类的代码已经写好了,就差 Controller层 和 Vue 的视图层还没有完成。今天在使用 axios 请求Controller 层时踩到了坑。具体描述如下:我使用 axios 实现登录功能,在将前端输入的登录信息传给 Contro...

weixin_35167817的博客 6009

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

axios post 404 但是 postman 正常

今天遇到这个问题,在获取token的时候。 axios post 404, 但是 postman 正常获取到返回的数据,发现请求的返回404。 路径都是正确的,参数也是正确的。后来发现是没有设置请求头。 这边需要post formdata格式,添加了之后就OK了。 要注意的一点是,我这边在获取token的时候,我把请求头里还加了个 'Authorization': 'Bearer ' + tok...

狗狗狗亮的博客 4251

VUE 之 AXIOS请求

AXIOS介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。 axios是我们在vue项目中常见封装http请求相对受欢迎的,优点如下: 简单易用,api接近于jquery,比原生的fetch之类的简单, 浏览器兼容性好,都能兼容IE7,使用fetch就得自己处理兼容 通用性好,能在node和浏览器中使用 api一致 稳定大牌,vue官网文档有推荐 以上几点呢,是大多数公司选择使用axios的主要原因,通过简单的了解我们应该知道axios是干嘛的

yhl521112的博客 1万+

spring boot后端Contriller和vue项目使用axios进行数据交互参数传递和接收总结记录,附加HttpServlet对象的使用和文件上传下载

安装依赖 cnpm i axios -S

weixin_45084986的博客 3020

封装axios,解决post请求参数传递问题

import sv from “./static-variables”;//引入静态变量 import router from “…/router/index”;//引入静态变量 import vueAxios from “axios”;//引入axios vueAxios.defaults.withCredentials = true;//解决跨域问题 //创建axios实例 let instance = vueAxios.create({ baseURL: sv.SERVER_URL, timeout:

lyh_0202的博客 3243

vue中的 Ajax请求—axios

文章目录配置路由一、配置axiosvue 使用axios插件(一)请求方法(不使用)(2)axios封装 !1.设置axios请求超时2.默认设置post的请求头3.设置ajax拦截器(1)请求拦截器(2)响应拦截器4.封装get post请求5.封装完成后 封装整个api 统一管理6.实例附:完整版axios封装 用于前后端分离项目 返回的是Promise 配置路由 1.配置路由文件 routes.js: let Index=()=>import('../view/Index.vue') expo

ling_xy的博客 3551

axios与springboot后端的数据传递

axios let data = {username:this.ruleForm.username,password:this.ruleForm.password}; this.axios.post("http://localhost:8181/user/login",data) .then((response) =>{ if(response.co...

weixin_41324527的博客 2549

axios请求大全

本文讲解axios封装方式以及针对各种后台接口的请求方式axios的介绍和基础配置可以看这个文档: 起步 | Axios中文文档 | Axios中文网axios封装的重点有三个,一是设置全局config,比如请求的基础路径,超时时间等,第二点是在每次请求前往请求头里面塞token,第三点是处理请求的response,如果出错了进行统一的错误处理 发送GET请求 我们先来看swagger文档,这个请求是get请求,传递的参数是query,也就是跟在url后面的键值对,类似于?key1=val1&key2

Cloud的专栏 2400

AJAX请求(GET、POST、响应JSON)_ajax post json

``在浏览器中打开后如下,再写一个服务端js(server.js),/server是路径输入访问请求后响应得到预置的响应体。修改html文件,拿到button元素和result结果,button绑定请求事件后响应成功设置result文本信息。最后得到的效果如下,如果需要在请求里加上参数使用?parameter=100这样的方式多个参数用&,下面看一下JSON的案例,按下键盘任意键触发事件响应服务器的JSON数据,

2401_86963534的博客 1898

【Axios】发送请求 / API / 理解与使用

【Axios】发送请求 / API / 理解与使用

one or only的博客 3683

axios cannot post 404_Fetch还是Axios,哪个更适合HTTP请求?

来源 | https://medium.com作者 | Harsh Patel前端开发最重要的部分之一是通过发出HTTP请求与后端进行通信,我们有几种方法可以异步地在JavaScript中进行API调用。几年前,大多数应用程序都使用Ajax发送HTTP请求,Ajax代表异步JavaScript和XML。但是现在,开发人员通常会决定在 .fetch() API和Axios之间进行选择。在本...

weixin_39542889的博客 261
上一篇: VUE项目中使用@scroll获取不到事件对象,结果undefined
下一篇: vue使用el-tag组件下的el-table出现抖动锯齿问题的解决
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值