我正在尝试使用php curl发送标头-这应该相当简单-但似乎存在问题。
在PHP 7.2上运行,我将标题设置为
curl_setopt($ch, CURLOPT_HTTPHEADER, array('My-custom-header-name' => 'Header-Value'));
在尝试使用curl_exec之前打印信息时
curl_getinfo($ch);
我得到以下结果:
标头部分保持空白,是因为它显示了响应标头?如果是,如何确保标题设置正确?
我可以访问要尝试访问的远程地址,并且可以看到,但是看不到先前设置的标头。在进行其他调查之前,我想确保将它们附加到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
我没有看到我的自定义标题。
非常感谢您的宝贵时间。
答案 0 :(得分:1)
您的数组实际上应该是行数组!而不是不同对象的数组。
所以,这应该做到。
array(
'My-custom-header-name: Header-Value'
)
赞:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'My-custom-header-name: Header-Value'
));
答案 1 :(得分:0)
您需要对请求标头使用选项CURLINFO_HEADER_OUT
。
仅当先前调用
CURLINFO_HEADER_OUT
设置了curl_setopt()
时才设置。
有关所有可用的选项标志,请参见documentation。
答案 2 :(得分:0)
我挣扎了大约 15 分钟才发现:我的标题的语法是错误的!
Header-Name: Header-Value
是正确的语法。如果您将它包含在命令行中,就像这样,
curl -H "Header-Name: Header-Value"
确保在需要的地方转义字符(Windows 和 Linux 在这里非常不同)。如果您将标题放在文件中,那就容易多了:
curl -H @headerFile.txt
通过在详细输出中包含 -v(小写)来验证您的请求:
curl -v