自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解決Ajax應(yīng)用中的session過期問題

開發(fā) 前端
本文描述了Ajax應(yīng)用中Session過期問題的幾個(gè)解決方案。

現(xiàn)在web開發(fā)中,ajax應(yīng)用的比較多。關(guān)于此方面的框架也不少。在應(yīng)用中都會(huì)遇到session過期的問題,如處理不當(dāng)會(huì)影響用戶體驗(yàn),也有可能產(chǎn)生莫名的問題。

結(jié)合自己的思考和網(wǎng)上相關(guān)內(nèi)容的參考,給出如下解決方案。每個(gè)方案都有不同的優(yōu)缺點(diǎn),歡迎大家指正。

方案1:檢查AJAX返回的返回的內(nèi)容是否有< html>標(biāo)簽

在web系統(tǒng)中,當(dāng)session過期時(shí),當(dāng)用戶有操作的時(shí)候,此時(shí)系統(tǒng)一般會(huì)返回登陸界面。

讓用戶重新輸入用戶名和密碼。當(dāng)session過期的時(shí)候,AJAX請(qǐng)求返回的內(nèi)容應(yīng)該是登陸界面的頁(yè)面內(nèi)容(即登陸界面的頁(yè)面的html代碼)。通過判斷返回內(nèi)容是否用< html>來(lái)判斷session是否過期。

  1. var result=request.responseText;/* ajax返回的內(nèi)容*/ 
  2.  
  3. if(result.indexOf('< HTML>')>-1){/*返回內(nèi)容中有html標(biāo)簽*/}  

或者

  1. var r=/< html>/ig;  
  2. if(r.test(result)){/*返回內(nèi)容中有html標(biāo)簽*/

通過上面的方法可以判斷session是否過期,然后根據(jù)具體的業(yè)務(wù)進(jìn)行異常處理。

方案2:返回的結(jié)果中有session是否過期的標(biāo)志。也有人稱為true/false模式。此解決方案一般結(jié)合json使用。

如返回的結(jié)果是:

  1. var res={  
  2. "result":true,/*session沒有過期,false(session過期)*/ 
  3. "data"  :""/*其它數(shù)據(jù)*/ 
  4. }  
  5. if(res["result"])  
  6. {  
  7.   /*session沒有過期*/   
  8.  }else{  
  9.  /*session過期*/ 

方案3:利用時(shí)間戳

在頁(yè)面上搞個(gè)全局變量

  1. var startDate; /*ajax最近一次訪問服務(wù)器的時(shí)間,Date類型*/ 
  2. if(new Date().getTime()-startDate.getTime()< 30*60*1000)  
  3. {  
  4. /*假設(shè)session過期的時(shí)間30分鐘*/ 
  5. /*session沒有過期*/ 
  6. }else{  
  7. /*session過期*/ 

哈哈!Do not trust the client

方案4:延長(zhǎng)session過期時(shí)間

此方案有性能問題

  4.1:延長(zhǎng)session過期時(shí)間

  4.2:client輪循server。(AJAX輪循server或client,server保持長(zhǎng)連接)

【編輯推薦】

  1. 一套通用Ajax框架的源代碼
  2. Ajax, 選擇GET還是POST?
  3. 流行的AJAX框架對(duì)比:jQuery,Mootools,Dojo,Ext JS
  4. ASP.NET AJAX框架調(diào)用后臺(tái)代碼的基本方法
  5. 詳解如何實(shí)現(xiàn)最基本的AJAX框架
責(zé)任編輯:yangsai 來(lái)源: 憨厚生
相關(guān)推薦

2009-07-22 18:02:26

ASP.NET Ses

2018-05-24 10:15:18

服務(wù)器Session問題

2009-02-18 09:30:10

AJAX跨域XML

2009-07-23 10:06:29

2021-02-04 09:13:03

Session異步線程

2011-08-11 15:23:04

iPhoneNSBundleXcode

2009-07-07 09:41:02

異步ServletAJAX

2017-11-06 11:10:02

TomcatSession屬性值

2011-11-28 22:45:19

Nginxsession

2011-06-15 14:55:42

Session

2012-03-27 15:23:15

JSONPAJAX

2012-03-09 10:27:37

Java

2010-10-08 16:31:08

AjaxIE6

2009-03-17 10:04:40

TemplateAJAXASP.NET

2010-04-29 09:16:16

Oracle密碼過期處

2021-03-25 11:25:43

云計(jì)算云計(jì)算產(chǎn)業(yè)云應(yīng)用

2021-03-26 11:38:29

云計(jì)算

2009-07-31 18:16:09

ASP.NET中的Se

2023-10-27 08:23:10

CookieWeb存儲(chǔ)

2011-05-26 17:37:11

Ajax
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)