【PHP】Ajaxによる通信(リクエスト)かどうか判定する方法

リクエストのログを記録していくときにjQueryのajax通信を使う場合は除外したかったので、サーバー側で判別する方法を調べたメモ。

環境変数のHTTP_X_REQUESTED_WITHを見れば分かるみたい。サーバーサイド(PHP)のサンプルコードは下のような感じ。

/**
 * Ajaxによるリクエストかどうか
 *
 * @return boolean True or False
 */
public function isAjax()
{
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
        return true;
    }
    return false;
}

これで判断できるのはjQueryがajax通信をするときのリクエストヘッダー「X-Requested-With」に「XMLHttpRequest」をセットしてくれているから。

ちなみにリクエストヘッダーを見る場合は、Firefoxのアドオン「LiveHTTPHeaders」が便利。

image

 

<関連記事>

jQueryを使ってPHPとJSON形式のデータをやり取りする方法