在PHP程式中,如何判斷一個網頁請求是ajax請求還是普通請求?我們在做項目中經常會存在這樣一個問題,在瀏覽器中直接輸入我ajax提交的地址後,瀏覽器就能直接請求資料並將資料列印到頁面上。從程式的嚴謹性上和安全上來說,我覺得這樣非常不好。
但是由於水平有限,這個問題直到今天才被我解決,特此留下文章以供有此需要的人學習。
首先說說原理:在發送ajax請求的時候,我們可以通過XMLHttpRequest這個對象,建立自訂的header頭資訊,如果您使用的是原生的ajax方法,也就是未使用jquery或者其他js架構套件裝的ajax方法,那麼代碼如下:
xmlHttpRequest.setRequestHeader("request_type","ajax");
另外通過jquery封裝的$.ajax()方法,我們可以輕鬆地在發送ajax請求之前,建立我們自訂的header頭資訊,樣本如下:
$.ajax({type:"GET",url:base_url + 'php_check_ajax_request/get_user_list.html',beforeSend:function (XMLHttpRequest) {XMLHttpRequest.setRequestHeader("request_type","ajax");},success:function(data){$("#user_list").html(data);$tip.hide();$button.attr('disabled',true);}});
上面的代碼中有一句:
XMLHttpRequest.setRequestHeader(“request_type”,”ajax”);
這一句代碼就是向header頭資訊裡面建立了一個我們自訂的一個變數“request_type”。這個變數在php中接收變數如下:
$_SERVER['HTTP_REQUEST_TYPE']
那麼對於本文所提出的的問題,我們就可以按下面這種方式來判斷使用者發送的請求是哪種方式了。
需要說明的是 “request_type”這個變數值是我們自訂的,你還可以隨意自訂,比如“test”,“is_ajax”等等。
您可能感興趣的文章
- http請求中同步請求和非同步請求的區別
- php判斷字串是否全英文,純中文,中英文組合的方法
- php如何判斷當前的作業系統是linux還是windows
- js如何判斷滑鼠滾輪是向下還是向上滾動
- php判斷日期格式是否正確的方法總結
- php判斷遠程檔案是否存在的辦法
- 程式員和測試員之間的經典對白。這些是國外程式員總結分享的,稱其上全球通用?
- php提取社會安全號碼碼中的生日日期以及驗證是否為未成年人的函數
http://www.bkjia.com/PHPjc/764108.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/764108.htmlTechArticle在PHP程式中,如何判斷一個網頁請求是ajax請求還是普通請求?我們在做項目中經常會存在這樣一個問題,在瀏覽器中直接輸入我ajax提交的...