php curl 未发送 headers
php curl not sending headers
我正在尝试使用 php curl 发送 headers - 这应该很简单 - 但似乎有问题。
运行 on PHP 7.2 我将 header 设置为
curl_setopt($ch, CURLOPT_HTTPHEADER, array('My-custom-header-name' => 'Header-Value'));
当尝试在 curl_exec 和
之前打印信息时
curl_getinfo($ch);
我得到以下结果:
header 部分仍然是空的,是因为它显示响应 headers 吗?如果是,如何确保 header 设置正确?
我可以访问我试图到达的远程地址,我可以看到,嗯,看不到,之前设置的 headers。在调查其他地方之前,我想确保它们已附加到 curl 请求。
同样的请求从本地地址到远程地址工作正常,php 7.1 和 7.2 之间是否有我不知道的变化?
编辑: 我添加了
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
但现在是:
curl_getinfo($ch, CURLINFO_HEADER_OUT);
给予
POST /someurl HTTP/1.1
Host : Some host
Accept: */*
Content-Length: 153
Content-Type: application/x-www-form-urlencoded
我没有看到我的自定义 headers。
非常感谢您的宝贵时间。
您需要为请求 headers 使用选项 CURLINFO_HEADER_OUT
。
This is only set if the CURLINFO_HEADER_OUT
is set by a previous call to curl_setopt()
.
查看 documentation 了解所有可用的选项标志。
你的数组实际上应该是一个行数组!不是不同对象的数组。
所以,这应该成功了。
array(
'My-custom-header-name: Header-Value'
)
像这样:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'My-custom-header-name: Header-Value'
));
我纠结了大约 15 分钟才发现:我的 headers 的语法是错误的!
Header-Name: Header-Value
是正确的语法。如果您将它包含在命令行中,就像这样,
curl -H "Header-Name: Header-Value"
一定要在需要的地方转义字符(Windows 和 Linux 在这里非常不同)。如果你的 headers 在一个文件中,那就容易多了:
curl -H @headerFile.txt
通过在详细输出中包含 -v(小写)来验证您的请求:
curl -v
我正在尝试使用 php curl 发送 headers - 这应该很简单 - 但似乎有问题。
运行 on PHP 7.2 我将 header 设置为
curl_setopt($ch, CURLOPT_HTTPHEADER, array('My-custom-header-name' => 'Header-Value'));
当尝试在 curl_exec 和
之前打印信息时curl_getinfo($ch);
我得到以下结果:
header 部分仍然是空的,是因为它显示响应 headers 吗?如果是,如何确保 header 设置正确?
我可以访问我试图到达的远程地址,我可以看到,嗯,看不到,之前设置的 headers。在调查其他地方之前,我想确保它们已附加到 curl 请求。
同样的请求从本地地址到远程地址工作正常,php 7.1 和 7.2 之间是否有我不知道的变化?
编辑: 我添加了
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
但现在是:
curl_getinfo($ch, CURLINFO_HEADER_OUT);
给予
POST /someurl HTTP/1.1
Host : Some host
Accept: */*
Content-Length: 153
Content-Type: application/x-www-form-urlencoded
我没有看到我的自定义 headers。
非常感谢您的宝贵时间。
您需要为请求 headers 使用选项 CURLINFO_HEADER_OUT
。
This is only set if the
CURLINFO_HEADER_OUT
is set by a previous call tocurl_setopt()
.
查看 documentation 了解所有可用的选项标志。
你的数组实际上应该是一个行数组!不是不同对象的数组。
所以,这应该成功了。
array(
'My-custom-header-name: Header-Value'
)
像这样:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'My-custom-header-name: Header-Value'
));
我纠结了大约 15 分钟才发现:我的 headers 的语法是错误的!
Header-Name: Header-Value
是正确的语法。如果您将它包含在命令行中,就像这样,
curl -H "Header-Name: Header-Value"
一定要在需要的地方转义字符(Windows 和 Linux 在这里非常不同)。如果你的 headers 在一个文件中,那就容易多了:
curl -H @headerFile.txt
通过在详细输出中包含 -v(小写)来验证您的请求:
curl -v