笔者声明,本文为个人原创作品,转载请注明出处
从swagger复制接口地址,发送请求却返回了404。
打印请求的config查看,地址并无异常
再抓包查看
搜索发现,%E2%80%8E的学术名词叫 Zero-width-space
(零宽空格) ,顾名思义,它是一个Unicode字符,却肉眼不可见。
解决方案:
- 删除复制的地址,手敲一遍;
- 在请求拦截器里对url进行字符过滤。(推荐,一劳永逸)
axios请求拦截器示例代码
// 创建axios实例
const request = axios.create({
baseURL: "你想设置的baseURL", // url = base url + request url
timeout: 5000 // 超时时间
});
// 请求拦截器
request.interceptors.request.use(
config => {
// 先把config.url进行URI编码,然后全局替换其中的特殊字符,然后再URI解码
config.url = decodeURI(encodeURI(config.url).replace(/%E2%80%8B/g,""))
return config;
},
error => {
console.log(error); // for debug
return Promise.reject(error);
}
);