php - 通过 CURL 发送 'X-Requested-With: XMLHttpRequest' 和其他 header - 其他方式?

标签 php curl header http-headers xmlhttprequest

当然,我已经阅读了几个与此完全相关的问题,但我不得不说这对我来说根本不起作用。我要完成的是

  • 通过 PHP 和curl 发送“X-Requested-With: XMLHttpRequest” header
  • 通过PHP和curl发送其他http请求 header

提供的解决方案对我不起作用。

我如何知道我没有发送正确的 http 请求 header ?

简单地通过

(1)比较 XMLHttpRequest 生成的真实 header (触发 JQuery 点击)与 Firefox 附加组件 Live HTTP headers 中 PHP 和curl 模拟的 header

(2)Print_r() - 目标脚本中的 $_SERVER 变量

我得到的结果是不正确/低于我的预期的?

首先也是最重要的: Firefox Live HTTP header 不会捕获我的 header (就像它们不存在一样)。

第二,通过 print_r($_SERVER):

如果我得到任何模拟 header ,我会得到[HTTP_X_REQUESTED_WITH] => XMLHttpRequest - 不是: [X_REQUESTED_WITH] => XMLHttpRequest. 对于我通过curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_header)发送的任何 header ,这个问题几乎仍然存在 - 其中任何一个 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;

我的问题总结:

  1. 是否可以准确发送“X-Requested-With: XMLHttpRequest” 通过 PHP 和curl header ?
  2. 是否可以避免将“HTTP_”前缀附加到自定义 header 通过PHP 和curl 发送?
  3. 使用 PHP 和 curl 是否存在众所周知的限制?

最佳答案

  1. Firefox Live HTTP header 不会显示您的 header ,因为它们是由服务器发送到另一台服务器而不是客户端(浏览器)。

  2. Curl 使用 CURLOPT_PROXY 正确发送 header 您可以尝试将curl流量通过调试代理,例如Fiddler如果您使用 Windows 进行开发,我确信有 Linux 替代品

  3. 如果您尝试从 $SERVER 变量获取 header ,它们将以 HTTP 为前缀,您可以使用 apache_request_headers获取不带 HTTP_ 前缀的 header 。

关于php - 通过 CURL 发送 'X-Requested-With: XMLHttpRequest' 和其他 header - 其他方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13107837/

相关文章:

php - 从数组中获取值

jenkins - 如何在 Jenkins 管道中捕获和格式化 Json 响应

php - 'Location' header 在 PHP 中根本不起作用

c++ - 将 C++ 方法声明从 .hh 文件移动到 .cc 文件

php - 处理大类时,如何分解它们?

PHP 搜索建议

PHP 包含相对于 URL 路径而不是文件路径,如何更改它?

PHP Curl 请求不适用于 easypaisa 支付网关发布请求

python - Curl 在子进程中生成状态 400

http - 为什么在 404 错误页面有 200 OK header 状态是不好的?