PHP CURL没有发送头信息

4

我正在尝试使用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个回答

12

你的数组实际上应该是行数组,而不是不同对象的数组。

这样做应该可以解决问题。

array(
    'My-custom-header-name: Header-Value'
    )

像这样:

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

有了这个格式,我可以看到我的标题!谢谢!现在我可以专注于为什么服务器给我401而它接受来自本地计算机的请求。非常感谢 :) - thiout_p

0

你需要在请求头中使用选项CURLINFO_HEADER_OUT

只有在之前的curl_setopt()调用中设置了CURLINFO_HEADER_OUT,才会设置这个选项。

请查看文档获取所有可用选项标志。


我在curl_setopt和curl_getinfo($ch, CURLINFO_HEADER_OUT)中都添加了CURLINFO_HEADER_OUT,但是这一次,curl_getinfo没有返回任何内容... - thiout_p
@thiout_p 文档没有说明需要添加到两个位置。它需要在请求发送之前设置;curl_getinfo() 然后在请求发送后具有该值。 - Martin Zeitler
我在关闭curl之后打印了curl_getinfo,我的错,我正在更新我的帖子。 - thiout_p

0
我在找了大约15分钟后才发现:我的头文件语法是错误的!
Header-Name: Header-Value

是正确的语法。如果你要在命令行中包含它,就像这样:

curl -H "Header-Name: Header-Value"

一定要在需要的地方转义字符(Windows和Linux在这方面非常不同)。如果您已经将标题放在文件中,那么就容易得多:

curl -H @headerFile.txt

通过包含-v(小写)以获取详细输出来验证您的请求:

curl -v

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接