常见的认证方式与请求头传递
在日常开发和接口调试中,很多后端接口都做了权限控制,访问前需要先登录并携带认证信息。最常见的做法就是通过请求头(Request Header)传递登录凭证。比如你写一个前端页面调用公司内部的用户中心API,结果返回401未授权,大概率就是没传对认证头。
最常用的几种认证方式包括:Basic Auth、Bearer Token(如JWT)、自定义Token等。它们都需要在请求头里带上对应字段。
Basic Auth 认证
这种方式把用户名和密码拼成 username:password,再用Base64编码后放在 Authorization 头里。
Authorization: Basic dXNlcjE6cGFzc3cwcmQ=注意这里的 dXNlcjE6cGFzc3cwcmQ= 是 user1:passw0rd 经过 Base64 编码的结果。虽然看起来像加密,其实只是编码,不能当安全手段用,必须配合 HTTPS。
Bearer Token(JWT)认证
现在大多数前后端分离项目都用 JWT 做状态无会话认证。用户登录成功后,服务器返回一个 token,后续请求都要把这个 token 放到请求头中。
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxxx前端拿到 token 后,在每次发请求时手动设置这个头,或者用 Axios、Fetch 封装统一注入。
自定义 Token 认证
有些老系统或内部服务不用标准格式,可能用 X-Auth-Token 或 X-Token 这类自定义字段传 token。
X-Auth-Token: abcdef1234567890这种需要看接口文档具体要求,字段名不固定,但原理一样:把登录后拿到的令牌塞进指定请求头。
实际代码示例
使用 JavaScript 的 fetch 发起一个带 Bearer Token 的请求:
fetch('https://api.example.com/user/1', {
method: 'GET',
headers: {
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxxx',
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => console.log(data));如果是用 Postman 测试接口,就在 Headers 标签页添加键值对,Key 写 Authorization,Value 写 Bearer <你的token> 即可。
常见踩坑点
少写 Bearer 前缀是高频错误。比如只传了 token 字符串,漏掉了 Bearer 和空格,服务器就识别不了。正确格式是 Bearer <token>,中间有个空格。
另一个问题是大小写敏感。虽然 HTTP 头字段名不区分大小写,但建议统一用标准写法,避免某些网关或中间件异常拦截。
还有的时候 token 过期了,一直调试请求头也没用,得重新登录拿新 token。别死磕头部格式,先确认 token 本身有效。