在web系統中,身份校驗是經常使用的方式。登陸頁面,是爲用戶提供登陸的入口。可是,有的時候,咱們使用ajax操做的時候,因爲得不到正確的數據信息,而使頁面停留不能跳轉到登陸頁面。其實,http協議的請求頭能夠幫咱們輕鬆解決這個問題。 html
在JavaEE的規範中,攔截器,是咱們對資源請求的一種過濾方式,而對於安全頁面的身份校驗,咱們也採用了這樣的方式。一般狀況下,咱們在攔截器中,獲取匿名用戶要請求的頁面是須要身份校驗,那麼咱們須要跳轉到登陸頁面,提示用戶輸入用戶信息。 java
可是,因爲ajax採用異步加載數據信息,獲取的爲text、json、xml等格式數據。這個時候,當我從服務器響應到客戶端的若是是登陸頁面。ajax是沒法正確解析這個頁面信息,因而就會出現以下現象:
1. 在彈出層中加載出登陸頁面
2. 沒法識別json、xml數據(html不是數據信息) jquery
其實,在攔截器中,咱們能夠經過HttpServletRequest對象,讀取Header信息就能夠區分,當前請求是ajax仍是普通請求。基於jquery的ajax,在請求頭中有以下配置:
web
X-Requested-With:XMLHttpRequest
那麼,咱們能夠經過 ajax
request.getHeader("X-Requested-With");
當咱們判斷是ajax請求的時候,咱們響應到客戶端的信息就作一下處理。告訴ajax,你須要跳轉登陸頁面。 json
固然,到如今,咱們的工做並無結束,咱們還須要設置一下$.ajaxSetup(),具體配置以下: 安全
$.ajaxSetup({ timeout: 3000, // 超時時間 error: function(xhr, status, msg) { // 這裏能夠從xhr中讀取,服務器響應回來的數據信息 } });
經過ajaxSetup能夠在全局設置jquery的ajax屬性,避免,每個ajax單獨配置。 服務器