Horis 2 anni fa
parent
commit
04d8b4a879

+ 1 - 1
app/src/main/java/io/legado/app/help/http/CookieStore.kt

@@ -74,7 +74,7 @@ object CookieStore : CookieManagerInterface {
         appDb.cookieDao.delete(domain)
         appDb.cookieDao.delete(domain)
         CacheManager.deleteMemory("${domain}_cookie")
         CacheManager.deleteMemory("${domain}_cookie")
         CacheManager.deleteMemory("${domain}_session_cookie")
         CacheManager.deleteMemory("${domain}_session_cookie")
-        android.webkit.CookieManager.getInstance().removeCookie(domain)
+        android.webkit.CookieManager.getInstance().removeCookie(url)
     }
     }
 
 
     override fun cookieToMap(cookie: String): MutableMap<String, String> {
     override fun cookieToMap(cookie: String): MutableMap<String, String> {

+ 7 - 7
app/src/main/java/io/legado/app/utils/CookieManagerExtensions.kt

@@ -6,17 +6,17 @@ import android.webkit.CookieManager
 
 
 
 
 @Suppress("unused")
 @Suppress("unused")
-fun CookieManager.removeCookie(domain: String) {
+fun CookieManager.removeCookie(url: String) {
     val cm = CookieManager.getInstance()
     val cm = CookieManager.getInstance()
-    val urls = arrayOf(
-        "http://$domain",
-        "https://$domain"
+    val domains = arrayOf(
+        NetworkUtils.getDomain(url),
+        NetworkUtils.getSubDomain(url)
     )
     )
-    urls.forEach { url ->
-        val cookieGlob: String? = cm.getCookie(url)
+    domains.forEach { dm ->
+        val cookieGlob: String? = cm.getCookie(dm)
         cookieGlob?.splitNotBlank(";")?.forEach {
         cookieGlob?.splitNotBlank(";")?.forEach {
             val cookieName = it.substringBefore("=")
             val cookieName = it.substringBefore("=")
-            cm.setCookie(url, "$cookieName=; Expires=Wed, 31 Dec 2000 23:59:59 GMT")
+            cm.setCookie(dm, "$cookieName=; Expires=Wed, 31 Dec 2000 23:59:59 GMT")
         }
         }
     }
     }
 }
 }

+ 7 - 0
app/src/main/java/io/legado/app/utils/NetworkUtils.kt

@@ -179,6 +179,13 @@ object NetworkUtils {
         }.getOrDefault(baseUrl)
         }.getOrDefault(baseUrl)
     }
     }
 
 
+    fun getDomain(url: String): String {
+        val baseUrl = getBaseUrl(url) ?: return url
+        return kotlin.runCatching {
+            URL(baseUrl).host
+        }.getOrDefault(baseUrl)
+    }
+
     /**
     /**
      * Get local Ip address.
      * Get local Ip address.
      */
      */