如何用Python requests库单次GET请求同时获取headers和content
嘿,太懂你这种不想做冗余请求的心情了——两次GET不仅浪费带宽,还可能因为网络波动出现不一致的情况对吧?其实不管你用什么语言,主流的HTTP客户端工具都支持在单次请求后同时拿到响应头和内容,根本不用发起两次请求。给你举几个最常用的例子:
Python 实现(用 Requests 库)
Requests是Python里最常用的HTTP库,发起一次请求后,返回的响应对象会同时包含响应头和内容,直接提取就行:
import requests # 只发起一次GET请求 response = requests.get("https://example.com") # 提取响应头(是一个字典格式的对象) response_headers = response.headers # 提取文本格式的响应内容,二进制内容用 response.content response_content = response.text # 打印结果 print("响应头:", response_headers) print("响应内容:", response_content)
这里整个流程只触发了一次HTTP请求,所有数据都来自同一个响应实例。
JavaScript 实现(用 Fetch API)
浏览器原生的Fetch API也能做到,注意解析内容时用的text()/json()方法是基于同一个响应流的,不会发起新请求:
fetch("https://example.com") .then(response => { // 先获取响应头对象 const responseHeaders = response.headers; // 可以用get()方法获取特定头部,比如 responseHeaders.get('Content-Type') // 再解析响应内容,这里用text(),JSON内容用json() return response.text().then(content => ({ headers: responseHeaders, content: content })); }) .then(result => { console.log("响应头:", result.headers); console.log("响应内容:", result.content); }) .catch(err => console.error("请求出错:", err));
通用思路(其他语言/工具)
不管你用的是Axios、Go的net/http包、Java的OkHttp还是其他HTTP客户端,核心逻辑都是一样的:
- 发起单次GET请求
- 从客户端返回的响应实例中,分别提取headers(响应元数据)和响应体(content)
- 绝对不需要为了拿headers和content各发一次请求
内容的提问来源于stack exchange,提问作者Johhny
相关产品推荐
相关产品推荐

