76

私のphpページへのリクエストがajaxリクエストであるかどうかをサーバー側で確認したいと思います。

これを行うには2つの方法を見ました:

最初の方法:GETこれが AJAX リクエストであることをページに伝えるリクエストでパラメーターを送信する (= mypage.php?ajax)

mypage.php:

if(isset($_GET['ajax'])) {
    //this is an ajax request, process data here.
}

2 番目の方法: ヘッダーを次のように設定しますxmlHttpRequest

クライアント側 js:

xmlHttpRequestObject.open(“GET”,url,true);
xmlHttpRequestObject.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

mypage.php:

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

実際、これら 2 つの方法は簡単にハッキングされる可能性があるため、このような AJAX リクエストを受け取ったかどうかを確認するのは安全ではありません。

AJAX リクエストを受信して​​いるかどうかを確認するにはどうすればよいですか?

4

8 に答える 8

70

これが結果を達成するためのチュートリアルです。

例:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{    
  exit;    
}
continue;

これは、パラメーターが空でないかどうかをチェックHTTP_X_REQUESTED_WITHし、それが と等しい場合xmlhttprequest、スクリプトを終了します。

于 2014-01-28T16:54:57.960 に答える
8

この関数は、AJAX 呼び出しをチェックするために Yii PHP フレームワークから使用されます。

public function isAjax() {
  return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest';
}
于 2018-01-17T13:30:20.270 に答える
5
$headers = apache_request_headers();
$is_ajax = (isset($headers['X-Requested-With']) && $headers['X-Requested-With'] == 'XMLHttpRequest');
于 2014-06-25T13:32:48.080 に答える
-7

変数を使用$_SESSIONして、要求がブラウザーから行われたことを確認できます。そうしないと、データベースまたはファイル [サーバー側] を介してリクエストを送信することができます。

于 2013-08-15T19:53:36.177 に答える