php使用curl发送请求时 添加header失效

原文地址

场景复现

$headers['token'] = '12erthyj7y6gtfhh567tuygjhkjb';

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

这个样设置headers后,一直无法请求成功,提示缺少token。

解决方案

php curl文档地址
仔细看文档后发现问题所在,设置headers是key和value组合成字符串的形式整体作为value添加到数组中,文档如下。

CURLOPT_HTTPHEADER 设置 HTTP 头字段的数组。格式: array(‘Content-type: text/plain’, ‘Content-length: 100’)

在我们的例子中,应该修改为:

// 或者 $headers['token'] = 'token: 12erthyj7y6gtfhh567tuygjhkjb';
$headers[] = 'token: 12erthyj7y6gtfhh567tuygjhkjb';

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

以上

### 如何使用 `curl` 发送带自定义 Header 的 GET 请求 在 Linux 或其他支持的服务器环境中,可以通过 `curl` 工具发送带有自定义 HTTP 头部 (Header) 的 GET 请求。具体实现方式如下: #### 使用 `-H` 参数添加自定义 Header `curl` 提供了 `-H` 参数用于指定额外的 HTTP 头部字段。每调用一次 `-H` 即可添加一个新的头部键值对。 以下是完整的命令结构: ```bash curl -H "Custom-Header-Key: Custom-Value" http://example.com/api/resource ``` 其中: - `-H "Custom-Header-Key: Custom-Value"` 表示添加名为 `Custom-Header-Key` 的头部,并将其值设为 `Custom-Value`。 - `http://example.com/api/resource` 是目标 URL 地址。 如果需要添加多个头部,则重复使用 `-H` 参数即可[^2]。 #### 示例:发送带两个自定义 Header 的 GET 请求 假设我们需要向某个 RESTful API 接口发送一个 GET 请求,并附带以下两个头部信息: 1. `Authorization`: Bearer Token 2. `Accept-Language`: en-US 对应的命令如下: ```bash curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept-Language: en-US" \ https://api.example.com/v1/data ``` 上述命令会向 `https://api.example.com/v1/data` 发起一个 GET 请求,同携带两个自定义头部字段[^4]。 --- ### 验证请求过程中的细节 为了调试或查看实际发送的内容,可以启用详细的日志模式。通过附加 `-v` 参数,可以让 `curl` 显示其与服务器交互的所有数据流,包括请求头和响应头的信息。 例如: ```bash curl -v -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept-Language: en-US" \ https://api.example.com/v1/data ``` 这将打印出完整的通信记录,便于排查潜在问题。 --- ### Python 中模拟 Curl 的替代方案 对于不希望直接依赖 Shell 脚本的情况,在编程语言层面也可以轻松完成相同功能。比如使用 Python 的 `requests` 库来模拟这一行为[^3]。 下面是一个等效于上述 `curl` 命令的 Python 实现: ```python import requests headers = { "Authorization": "Bearer YOUR_ACCESS_TOKEN", "Accept-Language": "en-US" } response = requests.get("https://api.example.com/v1/data", headers=headers) print(response.status_code) print(response.text) ``` 该脚本的功能完全匹配前述 `curl` 命令的行为。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值