
关键字 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 []( 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/ |