關於webview儲存cookie問題

2021-07-24 23:18:16 字數 2965 閱讀 6380

問題描述:

最近專案上需要使用webview載入乙個郵件功能,登陸時候會獲取乙個郵件登陸的位址,第一次開啟沒有問題,第二次開啟就提示「cookie not matched」

開始採取的措施是每次開啟url時儲存cookie,測試時發現並沒有生效,且是概率性的;

在oncreate裡初始化相關引數

獲取cookie並儲存

下次進入時候解析cookie並設定cookie

然而並沒有解決cookie問題,最後沒辦法,動用抓包工具fiddler4,從抓包工具資料看,少設定了乙個cookie

原來時因為setcookie這個api一次只能新增乙個cookie,多個cookie需要依次新增,至此問題解決;

通常我們在登入時獲取到使用者的cookie和token資訊,然後將其儲存到sdcard的webview快取檔案當中,這樣在載入網頁時,webview會自動將當前url的本地cookie資訊放在http請求的request中,傳遞給伺服器。

流程如下:

1、android客戶端給webview設定cookie的**如下:

public boolean synccookie() 

return textutils.isempty(newcookie) ? false : true;

}

cookie設定必須放在wevsettings設定和webview.loadurl()方法之前;

當cookie包含了多個鍵值對資訊時,需要多次呼叫setcookie方法,而不是使用下面這種新增分號的形式拼接字串:

website_name=782;

website_token=8f47c21816cb596c93b97d64adb7eb9b;

jsessionid=4315103e6ab51de5ba3d910772735d1c;

website_name=782;

website_token=294539a5631280a2cdbf99f0e906dc21;

在api 21之後,webview實現了自動同步cookie,不需要手動同步,所以,使用時可以新增版本判斷;

實際使用過程中,我在展示web的activity中通過多次呼叫setcookie的方法設定cookie,通過native介面多次進入web頁面,發現loadurl時,cookie值存在重複,比如:

第一次進入web:

website_name=782;

website_token=67715fb70d9e92cd7f9814dfdb14ecf4;

website_source=apk;

第二次進入web:

website_name=782;

website_token=67715fb70d9e92cd7f9814dfdb14ecf4;

website_source=apk;

jsessionid=4c17030f8e622f18dcdda8b58ee7ab3d;

website_token=67715fb70d9e92cd7f9814dfdb14ecf4;

website_name=782

出現問題:set-value存在重複,這樣導致,如果切換賬號進入web,會出現資料錯亂的情景,所以,如果採用在展示web的activity中設定cookie的方式,需在ondestroy方法中清除cookie。

websettings settings = webview.getsettings();  

string ua = settings.getuseragentstring();

2、cookiemanager會將這個cookie存入該應用程式/data/data/databases/目錄下的webviewcookieschromium.db資料庫的cookies表中

3、開啟網頁,webview從資料庫中讀取該cookie值,放到http請求的頭部,傳遞到伺服器

4、客戶端可以在登出登入時清除該應用程式用到的所有cookies,避免切換賬號等操作情景產生快取問題。

cookiemanager.removeallcookie();
補充:webview獲取載入網頁的cookie:

private

class

mywebviewclient

extends

webviewclient

public

void

onpagefinished(webview view, string url)

}

fiddler4簡單設定和使用

1 . 首先,確保安裝 fiddler 的電腦和你的手機在同一區域網內(如果電腦有線連線和wifi不是區域網,就用手機連wifi,然後把手機通過usb共享網路給電腦,這樣電腦也能聯網了),因為fiddler只是乙個**,需要將手機的**指向 pc 機,不能互相訪問是不行的。

2. 開啟fiddler的遠端連線,fiddler 主選單 tools -> fiddler options…-> connections頁籤,選中allowremote computers to connect。效果圖如下:

3. 開啟好遠端連線之後,重啟fiddler,不然就不會更新你剛開啟的遠端配置

4. 下面開始設定手機端了,獲取pc的ip位址,我的ip位址是:192.168.1.123

5. 開啟你的手機設定介面:

6.這裡就可以抓包了

webView怎麼儲存設定Cookie

今天朋友問到了webview怎麼設定儲存cookie的問題,因為之前在網上搜尋了很多種方法,經過反覆試驗整理出乙個簡單好用的方法,廢話不多說,沒圖沒 說個卵 重點關注圖中藍色部分 這行 中 string cookiestring access token token path 只要改這裡就ok st...

webView怎麼儲存設定Cookie

今天朋友問到了webview怎麼設定儲存cookie的問題,因為之前在網上搜尋了很多種方法,經過反覆試驗整理出乙個簡單好用的方法,廢話不多說,沒圖沒 說個卵 重點關注圖中藍色部分 這行 中 string cookiestring access token token path 只要改這裡就ok st...

關於COOK100品牌介紹

cook100酷克壹佰 國內最好的烤肉料!cook100有10多種味道的正宗烤肉料,cook100紐奧良烤雞醃料因其味道好,評價高!在全國各地十分暢銷。cook100酷克壹佰致力於成為國內家用烤肉料的領導品牌。經過大量消費者調查的結果,選擇cook100的理由 1.味道好。他的味道是公認的好,也是很...