【问题标题】:Checking if ajax request fails most of the time检查ajax请求是否大部分时间都失败
【发布时间】:2016-02-24 10:03:27
【问题描述】:

你好, 我正在使用这个 php 代码来检查是否通过 ajax 发出请求:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {echo 'is ajax';}

这段代码对我有效,直到今天大部分时间启动失败。 我用回显检查了 $_SERVER['HTTP_X_REQUESTED_WITH'] ,有时返回 XMLHttpRequest 大多数时间什么都不返回,有时返回这个 XMLHttpRequestOl 。

经过长时间的搜索,我找到了这个 answer,并使用该代码每次通过 ajax 请求测试时都会返回 xmlhttprequest。

谁能解释为什么会出现这种行为?

非常感谢,祝大家有个愉快的一天!

apache_request_headers() 的输出:

["Host"]=>
  string(9) "example.com"
  ["Connection"]=>
  string(10) "keep-alive"
  ["Accept"]=>
  string(46) "application/json, text/javascript, */*; q=0.01"
  ["Origin"]=>
  string(16) "http://example.com"
  ["X-Requested-With"]=>
  string(14) "XMLHttpRequest"
  ["User-Agent"]=>
  string(109) "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"
  ["Referer"]=>
  string(23) "http://example.com"
  ["Accept-Encoding"]=>
  string(13) "gzip, deflate"
  ["Accept-Language"]=>
  string(35) "ro-RO,ro;q=0.8,en-US;q=0.6,en;q=0.4"
  ["Cookie"]=>
  string(36) "PHPSESSID=0c3vufj32s6v47o2oq38cj2rh2"

apache版本是

Server version: Apache/2.4.10 (Debian)
Server built:   Nov 28 2015 14:05:48
Server's Module Magic Number: 20120211:37

【问题讨论】:

    标签: javascript php ajax


    【解决方案1】:

    尝试检查X-Requested-With 标头以确定Ajax 请求。众所周知,它可以与常见的 JavaScript 框架一起使用:

    $headers = getallheaders();
    if ('XMLHttpRequest' == $headers['X-Requested-With']) {
       // This is Ajax request!
    }
    

    Symfony 使用这种方式检查其Request::isXmlHttpRequest() 中的 XML HTTP 请求。

    【讨论】:

    • 现在我正在使用 $headers = apache_request_headers(); if(isset($headers['X-Requested-With']) && strtolower($headers['X-Requested-With']) == 'xmlhttprequest') { echo 'is ajax';} 我会尝试使用 getallheaders ();也。谢谢
    • getallheaders()函数是apache_request_headers()的别名,因为它的名字我更喜欢使用它。
    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 2012-11-02
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 2011-07-03
    相关资源
    最近更新 更多