首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 判斷請求是 AJAX 還是普通請求的標準做法 (自定義 Header 方案)

     編輯:PHP 相關知識

核心原理

客戶端發起 AJAX 請求時,通過 XMLHttpRequest.setRequestHeader() 設置自定義 Header,服務端通過 $_SERVER['HTTP_'] 讀取判斷。

客戶端實現

原生 JS

xmlHttpRequest.setRequestHeader('X-Request-Type', 'ajax');

jQuery $.ajax()

$.ajax({
    type: 'GET',
    url: '/api/user/list',
    beforeSend: function(xhr) {
        xhr.setRequestHeader('X-Request-Type', 'ajax');
    },
    success: function(data) { /* ... */ }
});

服務端判斷 (PHP)

if (isset($_SERVER['HTTP_X_REQUEST_TYPE']) && $_SERVER['HTTP_X_REQUEST_TYPE'] === 'ajax') {
    // AJAX 請求
} else {
    // 普通請求
}

關鍵點

  • Header 名稱自定義 (如 X-Request-Type、X-Requested-With),但慣例用 X-Requested-With: XMLHttpRequest (jQuery 默認發送)。
  • PHP 中 Header 自動轉換為 HTTP_ 前綴、大寫、下劃線:X-Requested-With → $_SERVER['HTTP_X_REQUESTED_WITH']。
  • 最簡單通用寫法:if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')。

此方案比檢測 $_POST['ajax'] 等業務參數更標準、更難被偽造、不侵入業務邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved