向API发送POST请求时AuthToken被传入请求体而非请求头的问题
问题分析与解决:Axios POST请求头未正确设置AuthToken
嘿,我一眼就看出问题出在哪啦!你这段Axios代码的参数顺序搞错了,才导致AuthToken被当成请求体发送,而不是放在请求头里。
Axios的post方法参数规则是这样的:
- 第一个参数:请求的URL(这个你写对了)
- 第二个参数:要发送的请求体数据(你现在把headers配置放在这个位置了,所以它被当成请求体传给后端了)
- 第三个参数:请求配置对象(这里才是放headers、超时时间这些配置的地方)
修正后的代码
如果你的POST请求不需要发送任何请求体内容,就传个空对象当第二个参数:
const fetchData = (id, authToken) => axios.post( `${APIUrl}/${id}/math`, {}, // 无请求体时传空对象,不能省略 { headers: { ...getAuthHeaderWithContentType(authToken, "JSON") } } ) .then(resp => (resp && resp.data ? resp.data : null));
如果你的POST请求需要发送实际的请求体数据(比如提交表单或JSON),就把数据放在第二个参数的位置:
const fetchData = (id, authToken, postData) => axios.post( `${APIUrl}/${id}/math`, postData, // 这里放你的请求体数据 { headers: { ...getAuthHeaderWithContentType(authToken, "JSON") } } ) .then(resp => (resp && resp.data ? resp.data : null));
这样修改后,你的AuthToken就会正确出现在请求头里,而不是请求体中啦!
内容的提问来源于stack exchange,提问作者dfsdigging
相关产品推荐
相关产品推荐

