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

如何在Python Requests中获取服务器返回的自定义响应头?

解决Requests无法获取自定义响应头的问题

嘿,我之前也踩过这个坑!用Python Requests库拿不到服务器返回的自定义响应头,通常逃不过这几个常见原因,咱们一步步来排查:

  • 先排查自动重定向的坑
    Requests默认会自动跟随3xx类的重定向请求,这时候你最终拿到的响应是最后一次跳转后的结果,而你的自定义响应头很可能只存在于最初的那个响应里。解决办法很简单,请求时禁用自动重定向:

    import requests
    response = requests.get("你的目标URL", allow_redirects=False)
    # 现在再检查response.headers里的内容
    
  • 确认自定义头是否在分块响应的Trailers里
    如果服务器用了分块传输编码(Transfer-Encoding: chunked),并且把自定义头放在了响应的尾部Trailers里,那默认情况下response.headers是读取不到这些头的。你需要开启流模式,读完整个响应后再获取Trailers:

    response = requests.get("你的目标URL", stream=True)
    response.content  # 必须先读取完所有响应内容,Trailers才会被解析
    custom_headers = response.raw.trailers
    
  • 先验证服务器真的返回了这个头
    别光盯着Requests的结果,先用更底层的工具确认服务器确实发送了这个自定义头。比如用curl命令:

    curl -v "你的目标URL"
    

    看输出里的响应头部分,如果curl也找不到这个头,那问题出在服务器端,和Requests无关。

  • 检查头名的拼写与大小写
    Requests的headers对象是不区分大小写的,但有时候我们可能会拼错头名(比如把X-Custom-Data写成X-Custome-Data)。保险起见,你可以遍历所有响应头来确认:

    for header_name, header_value in response.headers.items():
        print(f"{header_name}: {header_value}")
    

    这样能把Requests解析到的所有头都列出来,避免漏找。

一般按这个顺序排查,就能找到问题所在啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:07:04