Postman怎么发送带Token的请求?Vue里能拿到,但Postman总401
我在Vue里调接口能正常带上Authorization头,但用Postman测试同一个接口总是返回401,是不是我Header写错了?
这是我在Vue组件里的请求代码:
<script>
export default {
methods: {
fetchData() {
fetch('/api/data', {
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('token')
}
})
}
}
}
</script>
Postman里我在Headers加了 Key: Authorization,Value: Bearer xxxxx(直接复制localStorage里的token),但还是不行,到底哪里漏了?
1. 确认你 localStorage 里的 token 是不是带空格或者换行的,比如复制的时候不小心带了前后空格,直接
trim()一下试试:Postman 里别手输,直接点
Authorization下拉框选Bearer Token,然后右边输入 token,别自己拼Bearer前缀,Postman 会自动加。2. 检查接口是不是走
/api/xxx这种代理路径,你 Postman 直接请求了后端真实地址,比如http://localhost:8080/data,而 Vue 里是http://localhost:3000/api/data,代理层可能做了 token 转发或校验,但后端原生接口没处理,导致 401。3. 检查 token 有没有过期,Postman 里直接把 localStorage 里的 token 复制出来用
jwt.io解码看下exp字段,别用快过期的 token 测试。4. 最关键的一点:Postman 里 Headers tab 下确认 Authorization 是唯一一个叫这个名字的 key,别重复写了
Authorization和authoriZation(大小写问题在某些服务器会出问题,虽然 RFC 说不区分,但实际 nginx 或某些中间件会挂)。如果还 401,直接在后端加个日志打印
req.headers.authorization,看 Postman 发过去的值到底长啥样,90% 的问题都能定位在这一步。