【问题标题】:$_SERVER['HTTP_X_REQUESTED_WITH'] seemingly not available on PHP 5.1.6$_SERVER['HTTP_X_REQUESTED_WITH'] 在 PHP 5.1.6 上似乎不可用
【发布时间】:2010-04-10 15:07:45
【问题描述】:

我在运行 php 5.1.6 的服务器上遇到了问题 - 我用来检测 ajax 请求的代码无法正常工作,因为 $_SERVER 数组中缺少 $_SERVER['HTTP_X_REQUESTED_WITH'] 变量。相同的代码在 php 5.2 上运行良好,在 firebug 中我可以看到标头包括 X-Requested-With XMLHttpRequest。任何人都知道更多关于这个问题以及我如何解决它?提前致谢。

【问题讨论】:

  • 还有什么不同吗?例如。网络服务器软件和/或版本、PHP 作为模块或 cgi、安全设置、附加模块?
  • 给我带来问题的服务器在 Linux 上运行 Plesk,将 php 5.1.6 作为 apache 模块 (apache 2.2)。本地一切正常,设置为 php 5.2.1(作为模块)和 apache 2.2。

标签: php


【解决方案1】:

由于 php 是作为 apache 模块安装的,因此您可以使用 apache_request_headers() 进行调试。
添加时标题是否显示在debuglog.txt

function dbgLogRequest() {
  $s = date('Y-m-d H:i:s') . "\n request headers";
  foreach( apache_request_headers() as $name=>$value ) {
    $s .= "\n  $name: $value";
  }
  $s .= "\n____\n\n";

  file_put_contents('debuglog.txt', $s, FILE_APPEND);
}

dbgLogRequest();

你的代码?

【讨论】:

  • 感谢 VolkerK - 对了解我以后遇到的任何问题很有用。设法解决了这个问题 - 我遇到问题的站点是通过 Plesk 提供的站点的预览版本。我将站点移至专用域,问题消失了。很奇怪
【解决方案2】:

我能挖掘的只有:

  • IE 浏览器可能没有发送标头
  • 如果您有重定向,则标头不会被转发
  • 用于文件上传的内联框架不使用 ajax,所以不要发送此标头

仅此而已...没有太多其他内容...

【讨论】:

    【解决方案3】:

    您的文件或 .htaccess 中有某种重定向会清除此标头。

    【讨论】:

    • 我看不出这可能发生在哪里 - 我已经清空了我的 .htaccess 文件并测试了被请求的控制器的构造函数中的 $_SERVER['HTTP_X_REQUESTED_WITH'] 变量,它不在那里。很奇怪……
    猜你喜欢
    • 2011-02-04
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多