知用网
第二套高阶模板 · 更大气的阅读体验

HTTP认证头怎么用 实用操作步骤与避坑指南

发布时间:2025-12-09 05:48:27 阅读:340 次

HTTP认证头的基本作用

在日常的接口调试或系统对接中,经常会遇到需要登录验证的服务。HTTP认证头(Authorization Header)就是用来携带用户身份信息的一种标准方式。比如你写一个脚本调用公司内部的API,结果返回401,大概率就是没带认证头。

最常见的形式是在请求头里加上 Authorization 字段,服务器根据这个字段判断你有没有权限访问资源。

Basic 认证:最简单的用户名密码方式

Basic 认证把用户名和密码拼成 username:password 的格式,再用Base64编码后发出去。虽然不加密,但胜在简单,适合内网或配合HTTPS使用。

例如,用户名是 admin,密码是 123456,组合后是 admin:123456,Base64 编码后变成 YWxhZGRpbjpvcGVuc2VzYW1l(实际值可能不同,注意计算正确)。

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

在 curl 中可以这样写:

curl -H "Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l" https://api.example.com/data

Bearer Token:现在更主流的方式

现在很多接口用的是 Bearer Token,比如OAuth2 或 JWT 返回的 token。这种不需要用户名密码,只要拿到 token 就能用。

假设你从登录接口拿到了一串 token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...,那就直接把它放在认证头里。

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

用 curl 测试时:

curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." https://api.example.com/profile

代码中怎么加认证头

在 Python 的 requests 库里,推荐用 auth 参数处理 Basic 认证:

import requests
from requests.auth import HTTPBasicAuth

requests.get(
"https://api.example.com/data",
auth=HTTPBasicAuth('admin', '123456')
)

如果是 Bearer Token,直接手动加 headers:

headers = {
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
}
requests.get('https://api.example.com/data', headers=headers)

浏览器里怎么看认证头

打开 Chrome 开发者工具,切换到 Network 标签,点一个请求,看 Headers 部分有没有 Authorization 字段。有些页面刷新后自动带上 token,就是前端从 localStorage 取出来塞进去的。

如果自己写前端调接口,记得别把 token 明文写在代码里,也别打日志,避免泄露。

常见问题排查

发了认证头还是 401?先检查拼写,Authorization 容易拼错。再看是不是少了空格,比如 Bearerxxx 连在一起就不行,必须是 Bearer xxx

另外,有的服务用的是自定义头,比如 X-Api-Key,这时候就不是走标准 Authorization 了,得按文档来。

还有就是过期问题,token 通常有时效,过期了就得重新登录拿新的。