Devil May Code...

Vergil's Blog

前言

一般来说,AJAX请求与普通HTTP请求没有任何的区别。但jQuery框架会在Request header加上X-Requested-With:XMLHttpRequest

但这并不是一个标准,所以并非所有AJAX请求都会发送这个request header。原生的XMLHttpRequest对象就没有这个东西。

AngularJS的$http服务也不会发送这个header。

由于jQuery的流行,很多PHP框架会以此来判断这个请求是否AJAX。

例如:

LaravelIlluminate\Http\Request::ajax()方法。该类继承自Symfony框架的Symfony\Component\HttpFoundation\Request并使用了它的isXmlHttpRequest()来判断是否AJAX请求。

国内著名的ThinkPHP框架,IS_AJAX常量也是以此来判断是否AJAX。

define('IS_AJAX', ((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 

阅读剩余部分...


Powered by Typecho.