2012-03-22 57 views
8

我有一個通過Ajax加載其他頁面的頁面(認爲框架,除了沒有框架)。如何判斷一個頁面是通過Ajax調用,還是通過它自己調用

顯然這些頁面都可以獨立調用,所以我想檢測它們是否通過Ajax調用,如果不是,則重定向到主Ajax頁面。

頁面是php頁面,所以我也可以訪問它。

指數:

goto = "StandalonePrograms.php"; 
    var clear = "<br style='clear:both;'>" 
    if(goto != ''){ 
     $.ajax({ 
      url: goto, 
      context: document.body, 
      success: function(data){ 
       $('#mainwindow').html(data + clear); 
       $('#mainwindow').find("script").each(function(i){ 
        eval($(this).text()); 
       }); 
      } 
     }); 
    } 
+0

http://stackoverflow.com/questions/3696650/how-to-detect-if-file-is-being-accessed-or-requested查看選定的答案 – 2012-03-22 18:38:26

+0

有AJAX請求用特殊的查詢字符串調用頁面。這不是萬無一失的,但它可能夠好。 – Blazemonger 2012-03-22 18:39:26

+0

可能的重複[如何檢查請求是否通過AJAX與PHP?](http://stackoverflow.com/questions/4301150/how-do-i-check-if-the-request-is-made -via-ajax-with-php) – 2012-03-22 18:39:51

回答

12

現代瀏覽器添加下列請求頭時,請求使用XMLHttpRequest對象所做:

X-Requested-With: XMLHttpRequest 

在PHP中,使用檢查此標頭是否存在:

$_SERVER['HTTP_X_REQUESTED_WITH'] 
+3

對於PHP,您可以檢查'$ _SERVER ['HTTP_X_REQUESTED_WITH']'。 – 2012-03-22 18:39:43

+0

這不適用於PHP 7.1.11以及最新的Chrome瀏覽器,截至1月18日 – Mawg 2018-01-06 13:19:23

-1

你永遠不能相信客戶和他們發送的信息ormation! 頭文件可能被黑客欺騙(例如使用cURL),甚至HTTP_X_REQUESTED_WITH也不可靠。沒有100%可信的方式來知道這一點。 唯一的方法是使用驗證碼...