2016-01-30 129 views
0

是否有可能強制PHP只響應ajax請求?通過設置頁眉或等 例如,我們有這樣的代碼:PHP:僅迴應阿賈克斯請求

if (str.length == 0) { 
    document.getElementById("txtHint").innerHTML = ""; 
    return; 
} else { 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
     } 
    }; 
    xmlhttp.open("GET", "gethint.php?q=" + str, true); 
    xmlhttp.send(); 
} 

,我們想使一個Ajax請求。現在,當我們在瀏覽器中輸入'SITENAME.COM/gethint.php?q='時,它會顯示一些內容。如何預防此事件? 謝謝。

+0

http://stackoverflow.com/questions/8553611/verifying-xmlhttprequest-in-php的可能的複製 –

+0

可以使用POST方法我猜 –

+1

爲什麼你擔心有人可以把網址到瀏覽器並看到內容?你知道通過網絡發送的任何東西最終都可以在目的地進行檢查嗎? –

回答

5

你不能保證別人就不能進入本次非Ajax調用,但以下可以幫助防止非Ajax請求:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    // more code here 
} 

HTTP標頭是很容易設置,所以它不會保護它......只是不允許普通用戶直接點擊頁面。

+0

哦謝謝它的作品。 –

0

你可以試試這個。

if (strtolower(filter_input(INPUT_SERVER, 'HTTP_X_REQUESTED_WITH')) === 'xmlhttprequest') { 
    // I'm AJAX! 
}