You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests.get调用REST API超时,浏览器可正常访问的问题排查

问题分析与解决建议

可能被忽略的点

  • 浏览器与requests的环境差异:浏览器会自动带上系统代理、已保存的Cookie等会话信息,而requests.get默认是无上下文的干净请求。如果API需要代理才能访问,或者依赖浏览器中的Cookie才能正常连接,直接用requests就会触发超时。
  • 未设置超时参数:你的代码里没指定timeout,requests默认没有超时限制,可能导致请求无限等待。建议添加timeout参数(比如timeout=10),既能避免长时间挂起,也能更快排查问题。
  • HTTPS证书验证问题:部分内部API的证书不被requests默认信任,浏览器可能因为你之前手动信任过证书而正常访问,但requests会因证书验证失败间接出现类似超时的异常。可以临时关闭验证测试(verify=False),但生产环境要替换成指定可信证书路径。
  • 缺失必要请求头:浏览器会自动发送User-Agent、Accept等标准请求头,有些API会校验这些字段,缺失的话可能拒绝连接或延迟响应,最终表现为超时。

URL传递JWT的影响

  • 安全层面:JWT放在URL参数里会被记录到服务器日志、浏览器历史,比放在Authorization请求头里风险高,不建议这么做。
  • 兼容性:部分API只识别请求头中的JWT(格式为Bearer <token>),不支持URL参数传递,这会导致API拒绝请求,表现为连接超时或权限错误。
  • 格式问题:你的示例URL里是?JWT-token,没有正确的键值对格式(应该是?jwt=<你的令牌内容>或API约定的参数名),API无法解析的话会引发请求处理异常,进而导致超时。

修正后的示例代码

import requests

url = "https://www.restapi.com/content"
# 替换成你的实际JWT令牌,同时添加浏览器风格的User-Agent
headers = {
    "Authorization": "Bearer 你的JWT令牌",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

try:
    # 添加超时参数,避免无限等待
    response = requests.get(url, headers=headers, timeout=10)
    print(response.status_code)
    print(response.json())
except requests.exceptions.ConnectTimeout:
    print("连接超时,请检查网络、代理或API地址是否正确")
except requests.exceptions.SSLError:
    print("证书验证失败,测试阶段可临时加verify=False,但生产环境要指定可信证书")

内容的提问来源于stack exchange,提问作者Mike Curtis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:35:20