日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android實現清除單個域名的cookie

瀏覽:244日期:2022-09-25 13:22:09

今天PM提了個需求:用戶退出當前網頁時,只清除該網頁訪問的域名相關的cookie,保留其他域名的cookie。

查了一下CookieManager的API,發現只有removeAllCookie(),沒有清除單獨域名cookie的API。。。想想也是,用了這么多年的瀏覽器,啥時候見過這功能?

既然系統沒有提供接口,那就是只能自己想辦法去清了。

首先要搞清楚Cookie存在哪里吧?

在/data/data/<package>/app_webview目錄下,找到一個Cookies文件,雖然它沒有.db擴展名,但是其實它就是一個sqlite數據庫!進去看一下,數據都存在里面的cookies表里:

sqlite> .tablescookies meta sqlite> .dump cookiesPRAGMA foreign_keys=OFF;BEGIN TRANSACTION;CREATE TABLE cookies (creation_utc INTEGER NOT NULL UNIQUE PRIMARY KEY,host_key TEXT NOT NULL,name TEXT NOT NULL,value TEXT NOT NULL,path TEXT NOT NULL,expires_utc INTEGER NOT NULL,secure INTEGER NOT NULL,httponly INTEGER NOT NULL,last_access_utc INTEGER NOT NULL, has_expires INTEGER NOT NULL DEFAULT 1, persistent INTEGER NOT NULL DEFAULT 1,priority INTEGER NOT NULL DEFAULT 1,encrypted_value BLOB DEFAULT ’’,firstpartyonly INTEGER NOT NULL DEFAULT 0);INSERT INTO 'cookies' VALUES(13122904895970126,’.hm.baidu.com’,’HMACCOUNT’,’1E0666871DC4BB45’,’/’,13792186776970126,0,0,13122906283432123,1,1,1,X’’,0);INSERT INTO 'cookies' VALUES(13122905170226445,’.facebook.com’,’reg_fb_ref’,’https%3A%2F%2Fm.facebook.com%2F%3Frefsrc%3Dhttps%253A%252F%252Fwww.facebook.com%252F’,’/’,0,0,1,13122905170226445,0,0,1,X’’,0);INSERT INTO 'cookies' VALUES(13122905170227182,’.facebook.com’,’reg_fb_gate’,’https%3A%2F%2Fm.facebook.com%2F%3Frefsrc%3Dhttps%253A%252F%252Fwww.facebook.com%252F’,’/’,0,0,1,13122905170227182,0,0,1,X’’,0);INSERT INTO 'cookies' VALUES(13122905170227393,’.facebook.com’,’m_ts’,’1478103992’,’/’,0,0,0,13122905170227393,0,0,1,X’’,0);INSERT INTO 'cookies' VALUES(13122905172258460,’.facebook.com’,’datr’,’uxMaWFe4eAqp6W2_dDu2MpA1’,’/’,13185977172258460,0,1,13122905172258460,1,1,1,X’’,0);INSERT INTO 'cookies' VALUES(13122905172508865,’.facebook.com’,’fr’,’0EhMpmXi6717eJE6Y..BYGhO4.Dd.AAA.0.0.BYGhO7.AWUFjMmY’,’/’,13130681172508865,0,1,13122905172508865,1,1,1,X’’,0);CREATE INDEX domain ON cookies(host_key);CREATE INDEX is_transient ON cookies(persistent) where persistent != 1;COMMIT;

這里面存儲的其實就是HTTP頭里的Set-Cookie字段包含的所有信息,以facebook為例,拼起來其實就是:

Set-Cookie: m_ts=1478103992; datr=uxMaWFe4eAqp6W2_dDu2MpA1; fr=OEhMpmXi6717eJE6Y; path=/; domain=.facebook.com

只要我們把這些信息清除掉,webview下次發請求的時候就沒有有效cookie了。最直接的想法,調用CookieManager的setCookie()方法,把這些字段清空或者設置為過期不就行了?在StackOverflow上搜了一下,找到一個帖子討論類似的思想,試了一下發現還是不行。。。

原文鏈接:http://stackoverflow.com/questions/2834180/how-to-remove-cookies-using-cookiemanager-for-a-specific-domain/11621738#11621738

下面說一說遇到的一堆坑吧:

1. 同一個域名,http跟https兩種情況下cookie帶的參數是不一樣的。舉個例子,http://www.facebook.com跟https://www.facebook.com,通過CookieManager.getCookie()獲取 的參數是完全不一樣的。這個問題困擾了我一個多小時,因為我發現有些參數死活清不掉。。。

2. Cookies表里有一堆以“.”開頭的域名,比如表里的那個“.facebook.com”,它的一些參數用完全域名刪不掉。比如針對http://www.facebook.com調用CookieManager.setCookie()清除字段信息,你會發現表里多了一項'www.facebook.com'的記錄,而原來的'.facebook.com'的記錄仍然存在而且字段信息沒有被清除。

3. 使用以“.”開頭的域名,比如'.facebook.com',調用CookieManager.getCookie()時獲取不到全的參數列表。

4. 不同的網站會在Cookies表里增加多項記錄,以facebook為例,表里可能會存'www.facebook.com'、'.www.facebook.com'、'.facebook.com'這3種記錄。

最后說結論吧,幾經周折,總算找到一個能用的方法,親測5.1 / 6.0平臺可用。其實也很簡單粗暴,就是把上面第4條提到的那幾種記錄統統擼一遍,寧可錯殺一千,也不放過一個。。。

附上代碼(注意domain參數是帶上協議的全域名,比如https://www.baidu.com):

private static void deleteCookiesForDomain(Context context, String domain) { CookieManager cookieManager = CookieManager.getInstance(); if (cookieManager == null) return; /* http://code.google.com/p/android/issues/detail?id=19294 */ if (Build.VERSION.SDK_INT < 11) { /* Trim leading ’.’s */ if (domain.startsWith('.')) domain = domain.substring(1); } String cookieGlob = cookieManager.getCookie(domain); if (cookieGlob != null) { String[] cookies = cookieGlob.split(';'); for (String cookieTuple : cookies) {String[] cookieParts = cookieTuple.split('=');HashSet<String> domainSet = getDomainSet(domain);for (String dm : domainSet) { /* Set an expire time so that this field will be removed after calling sync() */ cookieManager.setCookie(dm, cookieParts[0] + '=; Expires=Wed, 31 Dec 2015 23:59:59 GMT');} } cookieManager.sync(); } } private static HashSet<String> getDomainSet(String domain) { HashSet<String> domainSet = new HashSet<>(); String host = Uri.parse(domain).getHost(); domainSet.add(host); domainSet.add('.' + host); // exclude domain like 'baidu.com' if (host.indexOf('.') != host.lastIndexOf('.')) { domainSet.add(host.substring(host.indexOf(’.’))); } return domainSet; }

以上這篇Android實現清除單個域名的cookie就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲国产一区二区三区在线播放| 国产欧美88| 中文字幕免费精品| 国产99精品一区| 日本а中文在线天堂| 久久精品福利| 国产一区二区三区天码| 成人台湾亚洲精品一区二区| 欧美激情aⅴ一区二区三区| 久久不卡国产精品一区二区| 国产精品视频一区视频二区| 免费看久久久| 久久一区精品| 水蜜桃久久夜色精品一区| 国产91在线精品| 特黄特色欧美大片| 女同性一区二区三区人了人一 | 欧美亚洲色图校园春色| 91亚洲精品视频在线观看 | 精品中文字幕一区二区三区四区| 欧美激情99| 国产精品国产三级国产在线观看| 国产劲爆久久| 国产一区二区三区91| 久久九九99| japanese国产精品| 伊人www22综合色| 亚洲人成网站在线在线观看| 日韩高清不卡在线| 精品三级在线观看视频| 日韩精品影视| 日韩中文字幕区一区有砖一区| 日韩精品视频在线看| 国产精品porn| 久久久久久久欧美精品| 亚洲成人av观看| 国产精品丝袜xxxxxxx| 免费不卡在线视频| 国产欧美一区二区三区国产幕精品 | 乱人伦精品视频在线观看| 亚洲精品少妇| 激情欧美亚洲| 四虎在线精品| 国产精品99精品一区二区三区∴ | 中文在线а√天堂| 国产亚洲永久域名| 国产福利一区二区三区在线播放| 中国字幕a在线看韩国电影| 黄色日韩精品| 国产免费av国片精品草莓男男| 四季av一区二区凹凸精品| 羞羞答答国产精品www一本| 国产精品s色| 国产亚洲一区在线| 精品国产一区二| 日韩高清一级| 久久久久.com| 欧美久久亚洲| 亚洲成av在线| 蜜臀av亚洲一区中文字幕| 美女视频一区在线观看| 9国产精品视频| 精品欠久久久中文字幕加勒比| 中文在线不卡| 国产一区二区三区精品在线观看| 日韩视频不卡| 久久久久伊人| 亚洲精品综合| 欧美日韩在线网站| 国产精品毛片久久久| 日韩午夜在线| 成人在线视频免费看| 亚洲一级大片| 99精品在线观看| 日韩精品免费视频一区二区三区| 三级小说欧洲区亚洲区| 国产精品高清一区二区| 亚洲欧美不卡| 国产在线观看www| 日本久久二区| 亚洲一区成人| 欧美成a人免费观看久久| 国产精品99精品一区二区三区∴ | 综合国产精品| 日韩欧美综合| 国产日韩一区| 久久国产精品99国产| 电影天堂国产精品| 国产精品欧美三级在线观看 | 亚洲97av| 红桃视频国产一区| 日本欧美不卡| 免费日韩成人| 欧美日韩亚洲一区| 中文字幕一区二区av| 999国产精品永久免费视频app| 国产精品丝袜在线播放| 日本一区福利在线| 香蕉久久久久久久av网站| 精精国产xxxx视频在线野外| 精品一区二区三区中文字幕视频 | 亚洲精品韩国| 久久国产精品毛片| 午夜av一区| 久久九九国产| 日韩欧美看国产| 国产另类在线| 日韩1区2区日韩1区2区| 免费人成网站在线观看欧美高清| 欧美日韩国产高清电影| 欧美一级精品| 日韩毛片视频| 电影91久久久| 黄色欧美在线| 精品美女在线视频| 嫩呦国产一区二区三区av| 欧美午夜网站| 日韩av一区二区三区四区| 一区二区国产在线观看| 丝袜美腿一区二区三区| 在线视频免费在线观看一区二区| 久久九九国产| 91精品综合| 欧美91视频| 欧美一区三区| 久久中文字幕av一区二区不卡| 亚洲www啪成人一区二区| 久久久蜜桃一区二区人| 亚洲午夜电影| 欧美 日韩 国产一区二区在线视频| 亚洲成人二区| 99精品小视频| 欧美日韩视频| 一区二区三区四区精品视频| 四虎精品一区二区免费| 日本欧美在线| 91精品国产自产观看在线 | 久久精品毛片| 麻豆mv在线观看| 亚洲成a人片| 欧美一级精品| 日韩精品一级中文字幕精品视频免费观看 | 蜜桃成人av| 合欧美一区二区三区| 99热免费精品| 中文字幕日韩欧美精品高清在线| 在线精品观看| 欧美在线黄色| 另类综合日韩欧美亚洲| 97精品国产福利一区二区三区| 欧洲一区二区三区精品| 在线看片不卡| 日韩高清中文字幕一区| 麻豆精品av| 香蕉视频亚洲一级| 免费精品视频最新在线| 日韩精品一区二区三区中文在线| 欧美片网站免费| 国产精品1区| | 性欧美精品高清| 国产日韩欧美中文在线| yellow在线观看网址| 欧美成人高清| 日韩av一区二区在线影视| 精品中文字幕一区二区三区四区| 美女一区网站| 视频一区国产视频| 国产精品美女午夜爽爽| 中文字幕系列一区| 亚洲精品乱码久久久久久蜜桃麻豆 | 日韩精品第一| 成人国产综合| 欧美特黄一级| 国产精品久久久久久av公交车| 国产亚洲一区二区手机在线观看 | 日韩在线一二三区| 欧美91在线|欧美| 色婷婷精品视频| 日韩一区免费| 92国产精品| 亚洲精品一二三**| 福利一区和二区| 性欧美长视频| 高清在线一区| 蜜芽一区二区三区| 日韩av有码| 伊人久久大香伊蕉在人线观看热v| 久久一区欧美| 国产午夜精品一区二区三区欧美| 国产精品xxx在线观看| 91久久午夜| 国产成人免费| 在线精品一区二区| 91精品韩国| 国产精品入口久久| 国产亚洲网站| 日韩电影免费网址| 日本国产一区| 伊人久久婷婷|