Axios执行PUT请求时忽略请求头中的false值,如何传递该值?
解决Axios请求头无法传递布尔值false的问题
问题原因
HTTP请求头的字段值必须是字符串类型,Axios在处理请求头时会自动过滤掉值为假值(包括false、null、undefined等)的字段,所以当你直接传入isRetry: false时,这个字段会被Axios移除,不会出现在实际请求中。
解决方案
将布尔值转换为字符串形式,确保字段值为Axios不会过滤的真值,以下是几种可行的写法:
方法1:使用toString()转换
直接把布尔变量转为字符串:
const someFunc = (data, env, isRetry = false) => axios.put(url, data, { headers: { locale: navigator.language, 'request-id': new Date().getTime().toString(), Authorization: `Bearer ${token}`, isRetry: isRetry.toString() // 将布尔值转为字符串 } });
方法2:三元运算符显式赋值
通过三元运算符直接返回字符串形式的"true"或"false":
const someFunc = (data, env, isRetry = false) => axios.put(url, data, { headers: { locale: navigator.language, 'request-id': new Date().getTime().toString(), Authorization: `Bearer ${token}`, isRetry: isRetry ? 'true' : 'false' } });
方法3:使用JSON.stringify()转换
如果需要保留JSON格式的字符串(比如带双引号的"false"),可以用这个方法:
const someFunc = (data, env, isRetry = false) => axios.put(url, data, { headers: { locale: navigator.language, 'request-id': new Date().getTime().toString(), Authorization: `Bearer ${token}`, isRetry: JSON.stringify(isRetry) } });
说明
以上方法本质都是将布尔值转为字符串,这样Axios会将其视为有效值保留在请求头中。后端接收时,可根据需求将字符串转回布尔类型处理。
内容的提问来源于stack exchange,提问作者Koushik J
相关产品推荐
相关产品推荐

