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

PHP中curl函数如何实现curl --raw的等效功能?

如何用PHP cURL实现curl --raw的等效行为?

curl手册中--raw(HTTP)选项的作用:启用后,将禁用所有内部HTTP内容或传输编码解码,直接传递未经修改的原始数据。

能否使用PHP的cURL函数/setopt实现相同行为?

已尝试CURLOPT_HTTP_CONTENT_DECODING,但它仍会解析分块响应(Transfer-encoding: chunked),因此该选项并不足够。

注:此问题讨论的是响应编码,而非请求编码——这正是--raw的作用所在。

要在PHP cURL中实现curl --raw的完全等效行为,仅设置CURLOPT_HTTP_CONTENT_DECODING是不够的,因为它只处理gzip、deflate这类内容编码的解码,不会影响分块编码这类传输编码的解析。

正确的做法是同时禁用两种编码的自动解码:

  • CURLOPT_HTTP_CONTENT_DECODING => false:关闭HTTP内容编码的自动解码
  • CURLOPT_HTTP_TRANSFER_DECODING => false:关闭HTTP传输编码的自动解码(包括分块编码的解析)

示例代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
// 禁用内容编码解码
curl_setopt($ch, CURLOPT_HTTP_CONTENT_DECODING, false);
// 禁用传输编码解码(含分块解析)
curl_setopt($ch, CURLOPT_HTTP_TRANSFER_DECODING, false);
// 直接返回原始响应数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$rawResponse = curl_exec($ch);
curl_close($ch);

// $rawResponse即为服务器发送的未经任何修改的原始字节流

配置完成后,PHP cURL会完全复刻curl --raw的行为,直接返回原始响应数据,不会对任何编码格式做解析处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:24:59