做前端调接口、写爬虫,或者用 Postman 测试后端 API,经常遇到 401 Unauthorized 错误——十有八九是 Authorization 头没加对。
这个头不是可有可无的装饰,而是服务器验证身份的‘敲门砖’。加对了,数据秒回;加错了,连门都进不去。
Authorization 是什么?
它是一个 HTTP 请求头字段(Header),格式固定:
Authorization: <type> <credentials>其中 <type> 是认证方案(比如 Bearer、Basic、Digest),<credentials> 是具体凭据(通常是 token 或编码后的账号密码)。
最常用:Bearer Token
现在绝大多数 REST API(比如微信开放平台、GitHub API、自家后台)都用 Bearer 方式传 token:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
JavaScript fetch 示例:
fetch('https://api.example.com/user', {
headers: {
'Authorization': 'Bearer abc123xyz789'
}
});
Postman 里点 ‘Authorization’ 标签页 → Type 选 ‘Bearer Token’ → 粘贴你的 token 就行。
老但还在用:Basic Auth
适合内网管理后台、简单调试场景。原理是把 用户名:密码 做 Base64 编码后传过去(注意:不加密!别在公网裸传密码):
Authorization: Basic dXNlcjpwYXNz
这里 dXNlcjpwYXNz 就是 user:pass 的 Base64 编码结果。可以用浏览器控制台快速生成:
btoa('admin:123456') // → 'YWRtaW46MTIzNDU2'
然后请求头就写:
Authorization: Basic YWRtaW46MTIzNDU2
其他情况别硬套
有些接口要求自定义前缀,比如:
Authorization: ApiKey abc-xyz-789或Authorization: Token 9a8b7c6d这时候必须按文档来,不能擅自改成 Bearer 或 Basic。
容易踩的坑
• token 前后多了空格(比如复制时带了换行);
• 拼错了大小写(Bearer 必须首字母大写,bearer 会失败);
• 在 URL 里传 token(如 ?token=xxx),而不是 Header;
• 用了中文引号或全角字符('Authorization' 写成 ‘Authorization’);
• token 过期了没刷新,还一直拿旧的用。