用有窮自動機(jī)解析Cookie.doc

用有窮自動機(jī)解析Cookie.doc

ID:48603588

大?。?3.50 KB

頁數(shù):7頁

時間:2020-02-26

用有窮自動機(jī)解析Cookie.doc_第1頁
用有窮自動機(jī)解析Cookie.doc_第2頁
用有窮自動機(jī)解析Cookie.doc_第3頁
用有窮自動機(jī)解析Cookie.doc_第4頁
用有窮自動機(jī)解析Cookie.doc_第5頁
資源描述:

《用有窮自動機(jī)解析Cookie.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、用有窮自動機(jī)解析Cookie以前我們開發(fā)一個代理轉(zhuǎn)換服務(wù)器,它位于移動設(shè)備(或者移動設(shè)備網(wǎng)關(guān),?如WAP網(wǎng)關(guān))與WEB服務(wù)器之間,移動設(shè)備通過我們的代理轉(zhuǎn)換服務(wù)器去訪問WEB服務(wù)器,代理轉(zhuǎn)換服務(wù)器會把取到的網(wǎng)頁(HTML)轉(zhuǎn)換成移動設(shè)備支持的網(wǎng)頁(如XHTML/CHTML/HDML/WML等),然后發(fā)給設(shè)備。這樣,移動設(shè)備就可以訪問現(xiàn)有的WEB服務(wù)了。后來,客戶要求加一個功能:大多數(shù)網(wǎng)站都要求瀏覽器支持Cookie,但很多移動設(shè)備的瀏覽器沒有這個功能,因為這個原因,設(shè)備訪問不了這些網(wǎng)站。客戶要求代理轉(zhuǎn)換服務(wù)器能夠解決這個問題

2、。在代理轉(zhuǎn)換服務(wù)器解中解決這個問題并不困難,可以這樣實(shí)現(xiàn):當(dāng)設(shè)備通過代理轉(zhuǎn)換服務(wù)器訪問WEB服務(wù)器時,如果在WEB服務(wù)器的響應(yīng)中帶有Set-Cookie,則代理轉(zhuǎn)換服務(wù)器把它存起來,在這個設(shè)備后續(xù)訪問時,?代理轉(zhuǎn)換服務(wù)器會從數(shù)據(jù)庫中把Cookie取出來,加到請求里,并發(fā)送給WEB服務(wù)器,這就模擬了設(shè)備支持Cookie的功能。實(shí)現(xiàn)時,我們需要把Cookie解析出來,并加上SessionID,查找時要根據(jù)SessionID和Domain等條件進(jìn)行匹配,滿足條件才加入到請求頭中。同時要定期檢查Cookie是否過期,若過期了,則從數(shù)

3、據(jù)庫中刪除。這里涉及到Cookie的解析和重組,當(dāng)然這非常簡單,我們用一個小程序演示如何用DFA解析Cookie。Cookie的格式為:“NAME=VALUE;expires=DATE;path=PATH;domain=DOMAIN_NAME;Secure”一個Cookie可以看作一個一個的{KEY,VALUE}對,KEY和Value之間用’=’分隔,{KEY,VALUE}對之間用’;’分隔,有的Value是可選的,如Secure。DFA的描述如下:字母表:ASCII碼狀態(tài):KEY前、KEY中,VALUE前,VALUE中和接

4、受狀態(tài)。KEY前狀態(tài)同時是起始狀態(tài)。轉(zhuǎn)換規(guī)則:KEY前狀態(tài)下讀到非空格,進(jìn)入在KEY中。KEY中狀態(tài)下讀到’=’,進(jìn)入VALUE前狀態(tài)。KEY中狀態(tài)下讀到’;’,進(jìn)入KEY前狀態(tài)。VALUE前狀態(tài)下讀到非空格,進(jìn)入VALUE中狀態(tài)。VALUE中狀態(tài)下讀到’;’,?進(jìn)入KEY前。KEY前狀態(tài)、KEY中狀態(tài),VALUE前和VALUE中狀態(tài)下讀到’/0’,進(jìn)入結(jié)束狀態(tài)。每當(dāng)讀到一個完整的{KEY,VALUE},就調(diào)用一個回調(diào)函數(shù)去構(gòu)建Cookie。實(shí)現(xiàn)代碼如下://Build:gcc-DDEBUG-gparsecookie.c-o

5、pc.exe#include?#include?#include?#include??typedef?int?(COOKIE_BUILDER)(void*pBuildCtx,?const?char*key,?const?char*value);//"Set-Cookie:name=value;Expires=date;domain=domainname;path=path;secure;"int?ParseCookie(const?char*psz

6、Cookie,?void*pBuildCtx,COOKIE_BUILDERBuilder){?????????enum?????????{??????????????????STAT_BEFORE_KEY,??????????????????STAT_IN_KEY,??????????????????STAT_BEFORE_VALUE,??????????????????STAT_IN_VALUE?????????}eState=STAT_BEFORE_KEY;?????????char*key=NULL;?????????

7、char*value=NULL;?????????char*pszWorkBuff=NULL;?????????char*p=NULL;?????????assert(pszCookie!=NULL&&Builder!=NULL);?????????pszWorkBuff=(char*)strdup(pszCookie);?????????p=pszWorkBuff;?????????while(*p!=?'/0')?????????{??????????????????switch(eState)?????????????

8、??????{????????????????????????????case?STAT_BEFORE_KEY:?????????????????????????????????????{???????????????????????????????????????????????if(*

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。