为何Axios在POST请求中忽略请求头?求修复方案
修复Axios POST请求headers被忽略的问题
你的POST请求headers失效的核心原因是Axios方法参数顺序错误:
- Axios
get(url[, config])方法的第二个参数直接是配置对象(包含headers),所以你的GET请求写法正确。 - 但Axios
post(url[, data[, config]])方法的第二个参数是请求体data,第三个才是配置对象。你把headers放到了第二个参数位置,Axios会把它当成POST的请求体数据,而不是请求配置,自然会忽略headers设置。
修复后的代码
把headers移到第三个参数位置,如果该POST请求不需要请求体,第二个参数传null或空对象即可:
static async likePost(jwt: string | null){ const response = await axios.post( `http://localhost:4000/api/feed/like`, null, // 无请求体时传null或{} { headers: { authorization: 'Bearer ' + jwt } } ); return response }
关于默认headers未生效的补充
如果之前设置全局默认headers没生效,大概率也是因为请求时错误的参数顺序导致Axios没有正确应用默认配置。修复参数顺序后,全局默认headers应该能正常生效(比如通过axios.defaults.headers.common['Authorization'] = 'Bearer ' + jwt设置的话)。
内容的提问来源于stack exchange,提问作者stephaniex
相关产品推荐
相关产品推荐

