关键字 vue/axios/element-ui
团队遇到了传参报 400 的问题,初步断定是因为参数某个字段含有中文和"%"导致。因为不带"%"就不会报 400 错误。
使用了 post 请求。
1
Perry 2021-03-26 11:14:47 +08:00
encoding 做好了就不会有这问题
|
2
ayase252 2021-03-26 11:15:12 +08:00 via iPhone
urlencode
|
3
ayase252 2021-03-26 11:17:33 +08:00 via iPhone
我没审好题,我的锅。
如果参数在 URL 上,确保传出去的时候 URLEncode 一遍,那边再 decode 。 在 Body 中的应该不用,按约定来 |
4
wenzichel 2021-03-26 11:26:38 +08:00
所有的参数均`encodeURIComponent`再传给后端接口!
|
5
zhlssg 2021-03-26 11:35:17 +08:00
现在 get 请求如果有中文是会自己转换的吧
|
6
gonethen OP @ayase252 #3 [![6j3478.png]( https://z3.ax1x.com/2021/03/26/6j3478.png)]( https://imgtu.com/i/6j3478)
这样算是已经 urlencode 了吧? |
7
mhycy 2021-03-26 11:47:13 +08:00
% 需要转义成 %25,你的请求里面出现了两个%
|
8
gonethen OP @wenzichel #4 axios.post 接受的是一个对象,encodeURIComponent 却需要传递一个字符串,该怎么用呢? qs.stringify?
|
9
eason1874 2021-03-26 12:02:09 +08:00
encodeURI 和 encodeURIComponent 都会转义 % ,可以正常传入 "测试%和 9"
你截图里显示没有转义,明显不是这两个其中一个的转义结果,应该是经过了其他处理,检查下吧。 |
11
ysc3839 2021-03-26 15:08:30 +08:00
发代码看看吧,估计是你写的有问题。自己试了下,使用 axios 的 params 参数是不需要自己 encodeURI 的,会自动处理好。
https://jsfiddle.net/w6e75ydu/ |