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

如何使用PHP获取HTTP请求返回的响应头和Cookie数据

常见场景下提取HTTP响应头与Cookie的实现方案

以下是不同技术栈下的直接可用实现方案:

Python(requests/urllib 场景)

无需额外依赖配置,直接通过响应对象的内置属性提取即可:

  • 提取响应头:访问响应对象的headers属性,返回类字典结构可直接按键取值
  • 提取Cookie:访问响应对象的cookies属性,可直接转为字典格式使用

requests库示例代码:

import requests

resp = requests.get("https://你的API地址")
# 提取全部响应头
print(resp.headers)
# 提取单个响应头,示例取Content-Type
print(resp.headers.get("Content-Type"))
# 提取全部Cookie并转为字典
cookie_dict = dict(resp.cookies)
print(cookie_dict)
# 提取单个Cookie,示例取session_id
print(resp.cookies.get("session_id"))

urllib库示例代码:

import urllib.request

req = urllib.request.Request("https://你的API地址")
with urllib.request.urlopen(req) as resp:
    # 提取全部响应头
    print(resp.headers)
    # 提取所有Set-Cookie字段
    print(resp.headers.get_all("Set-Cookie"))

前端JavaScript场景

Fetch API 实现

  • 前端默认无法通过JS读取跨域请求的响应Cookie和自定义头,同域下可正常读取,跨域场景需要后端配置Access-Control-Expose-Headers暴露对应字段才可读取
  • 跨域请求需要携带Cookie的话,必须添加credentials: "include"配置

示例代码:

fetch("https://你的API地址", {
  credentials: "include"
}).then(resp => {
  // 遍历所有响应头
  resp.headers.forEach((value, key) => {
    console.log(`${key}: ${value}`)
  })
  // 提取单个响应头
  console.log(resp.headers.get("Content-Type"))
  // 同域下读取当前页面Cookie
  console.log(document.cookie)
})

Axios 实现

浏览器环境下的Cookie读取规则和Fetch一致,Node.js环境可直接从响应头提取set-cookie字段:

import axios from 'axios'

axios.get("https://你的API地址", {
  withCredentials: true // 跨域携带Cookie的必填配置
}).then(resp => {
  // 提取全部响应头
  console.log(resp.headers)
  // Node.js环境下提取所有Cookie
  console.log(resp.headers['set-cookie'])
})

Java(OkHttp3 场景)

示例代码:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class HttpDemo {
    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url("https://你的API地址")
                .build();
        try (Response response = client.newCall(request).execute()) {
            // 提取全部响应头
            System.out.println(response.headers());
            // 提取单个响应头
            System.out.println(response.header("Content-Type"));
            // 提取所有Cookie
            System.out.println(response.headers("Set-Cookie"));
        }
    }
}

通用注意事项

  • 跨域场景下要读取非默认暴露的响应头(包括Set-Cookie、自定义业务头),必须由后端在响应头中添加Access-Control-Expose-Headers配置,把需要读取的字段加入白名单,否则前端JS无法读取
  • 如果Cookie设置了HttpOnly属性,前端JS无法通过document.cookie读取该Cookie,仅会由浏览器自动在后续请求中携带

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 17:18:02