当然,我已经阅读了几个与此问题完全相同的问题,但我不得不说它根本不适合我。我即将完成的是
- 通过 PHP 和 curl 发送“X-Requested-With: XMLHttpRequest”标头
- 通过 PHP 和 curl 发送其他 http 请求标头
提供的解决方案对我不起作用。
我怎么知道我没有发送正确的 http 请求标头?
只需通过
(1)比较XMLHttpRequest(触发JQuery点击)生成的真实headers和Firefox add-on Live HTTP headers中PHP和curl模拟生成的headers
(2)Print_r() - 目标脚本中的 $_SERVER 变量
我得到什么不正确/低于我的预期?
首先也是最重要的:Firefox Live HTTP 标头不会捕获我的标头(就像它们不存在一样)。
其次,通过 print_r($_SERVER):
如果我得到任何模拟标题,我得到[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
-而不是: [X_REQUESTED_WITH] => XMLHttpRequest
。对于我通过 curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_header) 发送的任何标头,该问题几乎仍然存在 - 其中任何一个都以'HTTP'为前缀('Header1: value1' - 我得到'HTTP_HEADER1')。
我将 XAMPP 与 PHP 版本 5.4.7, CURL 7.24.0 一起使用。
在我询问我正在尝试完成的工作是否可能并提前表示感谢之前,提供我的代码并不是一个坏主意 -这是我尝试过的众多代码解决方案之一。
$curl_header = array('X-Requested-With: XMLHttpRequest');
$data = "name=miloshio"; // just to be sure I'm doing the POST request
$ch = curl_init('http://example.com/test.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
echo $result;
我的问题总和:
- 是否可以通过 PHP 和 curl 准确发送“X-Requested-With: XMLHttpRequest”标头?
- 是否可以避免将“HTTP_”前缀附加到 PHP 和 curl 发送的自定义标头?
- 使用 PHP 和 curl 是否存在众所周知的限制?