日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎么样给ajax的ulr加密,研究Ajax请求受登录保护的URL的优雅解决

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么样给ajax的ulr加密,研究Ajax请求受登录保护的URL的优雅解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在此先記下思路。

場景:登錄頁面login,在一個登錄后才能訪問的頁面dashboard,dashboard上有一個按鈕button,button綁定了一個單擊事件,觸發后發出一個ajax請求,ajax請求返回一個html片段,并把這個html片段更新到某個dom標簽。

條件:dashboard頁面如果登錄過期,再次訪問dashboard或點擊button發出ajax請求應該跳轉到登錄頁面login。

問題: 如果對ajax熟悉或有以上類似情況經驗的,應該知道,登錄過期后,如果不刷新dashboard頁面,而直接點擊button發出ajax請求,那么ajax獲取到的響應內容會是整個登錄頁面login,而不是正確的那個html片段,這樣更新到dom標簽的話,頁面整個亂掉了。

解決:ajax請求的地址在響應內容前先做登錄判斷,如過期則返回一個標志位,比如login=false\true,在ajax回調的方法中判斷此標志位, 如果login=true,則location.href=登陸頁面url。

優雅:理論上是這樣,還沒試驗。拿javaEE應用+jQuery Ajax(版本1.5+)來說。因為我比較熟悉JEE。JEE可以通過過濾器Filter來控制所有的受登錄保護的url請求。

jQuery Ajax可以通過ajaxSetup設置全局選項,其中有一項是關于響應的狀態碼的,在1.5+版本中叫 statusCode ,而且jQuery Ajax有一個請求頭:X-Requested-With = XMLHttpRequest

沒錯了,通過狀態碼及請求頭就可以更方便,更自動的解決登錄保護問題。

做法為: Filter通過request.getHeader(“X-Requested-With”)可以判斷是否為Ajax請求(所以自己寫的ajax最好也加上這個請求頭)。 當是Ajax請求并且登錄已經過期,則直接在Filter中響應一個狀態碼401,或者其他自定義各種碼。在ajaxSetup全局選項中配置如何處理這個狀態碼,亦即location.href=登陸頁面url。這樣就可以統一自動的處理各種登錄保護下的ajax請求了。

ajaxSetup例子如下:

$.ajaxSetup({

statusCode: {

'401': function() {

//alert('登錄超時了哦...');

//如果做了登錄自動跳回,可以再加個東東

var currUrl = encodeURIComponent(location.href);

location.href = '/login?url=' + currUrl;

}

}

});

/* URI編碼及解碼方法 */

/* 推薦方式 */

console.info(encodeURIComponent('http://www.aa.com/hh ll/'));

console.info(decodeURIComponent('http://www.aa.com/hh ll/'));

/* 另外的簡單方式

encodeURI 不對下列字符進行編碼:“:”、“/”、“;”和“?”。請使用 encodeURIComponent 對這些字符進行編碼

*/

console.info(encodeURI('http://www.aa.com/hh ll/'));

console.info(decodeURI('http://www.aa.com/hh ll/'));

總結

以上是生活随笔為你收集整理的怎么样给ajax的ulr加密,研究Ajax请求受登录保护的URL的优雅解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。