使用requests模块转curl请求为Python代码后遇“Access denied”错误
排查Python Requests请求Access Denied问题
嘿,我一眼就看到问题所在啦——你把curl里的请求头参数放错地方了!
核心错误原因
你写的代码里把Authorization放在了data参数里,但curl命令中的-H是用来设置HTTP请求头的,不是请求体的数据。requests库中传递请求头需要用headers参数,而不是data,这就是导致服务器返回"Access denied"的关键原因。
修正后的代码
import requests # 正确传递请求头 response = requests.get( "http://blablabla.com", headers={'Authorization': f'Bearer {token}'} ) # 解析响应内容 result = response.json()
额外排查要点
如果修正后还是有问题,可以检查这几点:
- 确认
token变量的取值完全正确,有没有多余的空格、拼写错误,比如Bearer后面的空格一定要保留 - 对比curl和Python代码中的URL,确保完全一致(包括路径、大小写、查询参数等)
- 可以打印请求的完整头信息,验证Authorization是否正确设置:
print(response.request.headers) - 部分服务器会校验请求的
User-Agent,你可以模拟curl的User-Agent来测试:headers = { 'Authorization': f'Bearer {token}', 'User-Agent': 'curl/7.68.0' # 替换成你实际curl版本的User-Agent } response = requests.get("http://blablabla.com", headers=headers)
内容的提问来源于stack exchange,提问作者rynsm4rt
相关产品推荐
相关产品推荐

