检查ajax请求是否在大多数时间内失败

时间:2016-02-24 10:03:28

标签: javascript php ajax

那里, 我正在使用这个PHP代码来检查是否通过ajax发出请求:

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

此代码适用于我,直到今天大部分时间开始失败。 我已经使用echo检查 $ _ 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

1 个答案:

答案 0 :(得分:0)

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

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

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