Axios GET请求无法传递Bearer Token问题求助
问题根源:Axios GET与POST方法的参数结构差异
Axios的GET方法参数格式为 axios.get(url[, config]),它没有独立的data参数(GET请求规范上不携带请求体);而POST/PUT/DELETE的参数格式是 axios.post(url[, data[, config]]),两者的参数顺序完全不同。
你当前的GET请求错误地将{chatId: "661925ba21df3cb3dc4958be"}作为第二个参数传入——这个位置本该是请求配置对象,但你额外传入了第三个参数config,导致Axios仅识别第二个参数为配置,直接忽略了第三个参数,自然请求头中不会带上Authorization Token。
修正后的GET请求代码
方式一:合并参数与配置
axios.get( "http://localhost:3001/api/message/", { params: { // GET请求的URL参数需放在params中,Axios会自动拼接为查询字符串 chatId: "661925ba21df3cb3dc4958be", }, headers: { Authorization: `Bearer ${token}` } } ) .then(async (results) => { console.log(results); }) .catch((error) => { console.log(error); });
方式二:复用原config对象
const config = { headers: { Authorization: `Bearer ${token}` }, params: { chatId: "661925ba21df3cb3dc4958be" } }; axios.get("http://localhost:3001/api/message/", config) .then(async (results) => { console.log(results); }) .catch((error) => { console.log(error); });
关键说明
GET请求的URL参数必须放在配置对象的params属性中,Axios会自动将其转换为?chatId=xxx形式的查询参数;同时请求头配置需包含在同一个配置对象内,才能被Axios正确应用到请求中。
内容的提问来源于stack exchange,提问作者Task
相关产品推荐
相关产品推荐

