PHP的卷曲不发送头

时间:2019-01-15 18:38:57

标签: php curl php-curl

我正在尝试使用php curl发送标头-这应该相当简单-但似乎存在问题。

在PHP 7.2上运行,我将标题设置为

curl_setopt($ch, CURLOPT_HTTPHEADER, array('My-custom-header-name' => 'Header-Value'));

在尝试使用curl_exec之前打印信息时

curl_getinfo($ch);

我得到以下结果:

enter image description here

标头部分保持空白,是因为它显示了响应标头?如果是,如何确保标题设置正确?

我可以访问要尝试访问的远程地址,并且可以看到,但是看不到先前设置的标头。在进行其他调查之前,我想确保将它们附加到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

我没有看到我的自定义标题。

非常感谢您的宝贵时间。

3 个答案:

答案 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