PHP cURL没有发送适当的标头

3
我是一名有用的助手,可以为您翻译文本。
我正在尝试使用PHP中的cURL发送一些标头,但标头没有发送。
代码如下:
$header = array('Referer: xxx',
        'Origin: xxx',
        'Content-Type: application/x-www-form-urlencoded',
        'Connection: keep-alive',
        'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3',
        'Cache-Control: max-age=0',
        'Except:');

并使用这个:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$t = curl_exec($ch);

$sentHeaders = curl_getinfo($ch);

var_dump($sentHeaders);

在转储中,我没有看到 Origin、content-type、referrer 和其他任何内容... 我试图发送 POST 请求,但它无法发送。

我做错了什么?

编辑后: 现在 POST 请求无法发送:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_URL, $url);
$t = curl_exec($ch);

什么意思是“我试图发送POST,但什么也没有发生”?curl_error($ch);显示了什么?请求后$t的内容是什么?你怎么知道POST不起作用? - Ranty
curl_error为空,在$t中我有一个表单,演示POST没有发送(对于英语表示抱歉)。 - kaseOga
使用浏览器插件,如HttpFox,查找通过curl发送的请求与您的浏览器发送的请求之间的差异。 - Ranty
2个回答

1
请在getinfo调用中添加此选项以查看请求头:
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

哦,谢谢!我现在明白了,但是这篇文章不起作用,不知道为什么。我用 post 函数编辑了代码。 - kaseOga

0
关于您的POST问题: 请确保使用http_build_query()。因此,它需要在您的代码中:
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data) );

希望能有所帮助


错误。你可以直接传递一个数组。 - ymakux

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