大多數的 JavaScript 框架如 jquery,Mootools 等,在發出 Ajax 請求時,都會發送額外的 HTTP_X_REQUESTED_WITH 頭部信息,頭當他們一個ajax請求,因此你可以在服務器端偵測到 Ajax 請求.
1,通過傳遞_GET參數的方法簡單實現網頁請求的判斷。
url上這么傳遞:*******.php?ajax
php這么判斷:
- if(isset($_GET['ajax'])) {
- ...這是一個ajax請求,然后...
- }
- else {
- ...這不是一個ajax請求,然后...
- }
這種實現方法很差勁,相當容易容易容易偽造,判斷和不判斷么有任何區別,所以又出來一種自認為很科學的處理方式,這種方式確實有一定的學習價值.
Php獲取系統變量中的xmlHttpRequest判讀。
首先你必須使用jquery,Js發送ajax請求,通過jquery發送的$.ajax, $.get, or $.post方法請求網頁內容時,它會向服務器傳遞一個HTTP_X_REQUESTED_WITH的參數,這個參數的值是xmlHttpRequest.
Js 代碼如下:
- beforeSend : function (XMLHttpRequest) {
- XMLHttpRequest.setRequestHeader("X-Requested-With","XMLHttpRequest");
- };
- if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
- {
- //If AJAX Request Then
- }else{
- //something else
- }
1,如果
你的jquery請求是通過iframe打開網頁的,那么HTTP_X_REQUESTED_WITH參數不會被傳遞,也就是說你沒有辦法判斷請求的類型。
2,IE5,IE6老版本的瀏覽器總中$.ajax,$.get, or $.post方法不會自動發送HTTP_X_REQUESTED_WITH的參數到頭部信息,因為php中也是無法獲取參數進行判斷,除非你自己構造XMLHttpRequest對象出來,然后再發送給php腳本,相當于用最原始的js實現ajax功能,這樣做,jquery框架本來封裝好的ajax就失去意義啦.
新聞熱點
疑難解答