- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在我的应用程序的 onCreate 中调用 CookieManager.getInstance().removeAllCookie()。
我遇到了一个奇怪的问题,我发现在 GET 请求中传递了意外的 cookie 值。事实上,cookie 值是一个非常非常古老的值。
以下是我为测试执行的步骤:
我第一次安装该应用程序时,cookie 行为如我预期的那样工作。我卸载了该应用程序,然后重新安装它,cookie 行为再次按预期工作。我这样做了几次,一切都很好。
然后,突然间,在第 N 次安装时,第 2 步没有通过。第一个 GET 请求不干净。事实上,它带有一个在第一次安装应用程序时设置的值。
我无法可靠地重现这个问题,但我确实经常看到它。这并不是说安装时的第一个 GET 请求是从紧接在前的安装中发送一个 cookie 值——该值来自三四次之前的安装,这些安装之后都是卸载。
我怎么可能看到这个?我怎样才能真正删除应用程序的所有 cookie?
最佳答案
这是在黑暗中拍摄的,但您第一次安装的 cookie 可能在永久存储中,而重新安装的 cookie 缓存在 RAM 中。也许出于某种原因,删除所有 cookie 的操作没有同步到持久存储,因此它在重新安装之间保留了旧值。
引用 CookieSyncManager
的文档(强调我的):
The CookieSyncManager is used to synchronize the browser cookie store between RAM and permanent storage. To get the best performance, browser cookies are saved in RAM. A separate thread saves the cookies between, driven by a timer.
...
The sync interval is 5 minutes, so you will want to force syncs manually anyway, for instance in onPageFinished(WebView, String). Note that even sync() happens asynchronously, so don't do it just as your activity is shutting down.
这强烈表明也许(在您的测试中,我假设有时间隔少于 5 分钟)当应用程序被卸载时它还没有同步,所以第一次安装的旧值是此时仍在持久存储中。我也没有理由假设如果 5 分钟间隔没有过去,卸载过程中会发生同步。
这留下了一个问题:为什么有时会发送一些 cookie,即使您在 onCreate
中清除了它们?结果是 removeAllCookie
is also asynchronous - 有时它会在您发出第一个请求之前完成,有时不会,在后一种情况下,它会发送仍处于 Activity 状态的值:您第一次安装时仍在持久存储中的值。
(请注意,我仍在学习 Android 开发,我的一些假设可能是错误的 - 关于 cookie 的管理方式以及在 activity's lifecycle 中的一个状态下进行的异步调用是否可能仍未完成当另一个运行时;但这种解释与您描述的行为非常一致)
关于android - CookieManager.getInstance().removeAllCookie();不会删除所有 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13896993/
我正在尝试获取 m.facebook.com 的 cookie通过 CookieManager.getInstance().getCookie() 加载到 android.webkit.WebView
I've seen answers about how this should work with the old DefaultHttpClient but there's not a good e
很遗憾,Android 有大量的 cookie 管理器。 HttpURLConnection 的 cookie 由 java.net.CookieManager 维护,WebView 的 cookie
引用这个 How to secure a cookie in android? 我想在我的 android 应用程序中将 cookie 与 webview 一起使用。我想设置 cookie 的安全属性
我有一个应用程序,该应用程序进行多次网络调用以进行身份验证,然后返回一个 JSON。我的 Web 调用是针对 https 服务器的,我使用的是 HTTPURlConnection。 我需要将 se
我正在尝试通过线程建立多个连接。 但是每个连接似乎都会覆盖对方的 cookie,导致连接使用错误的 cookie。 在线程类的构造函数中: manager = new CookieManage
我正在尝试为每个 chromium 浏览器实例创建单独的用户 session ,但找不到任何有关如何创建的相关示例。目的是为每个浏览器实例单独存储 cookie。 谁能指出我正确的方向?我会发布相关代
我正在制作一个访问网站的 Java 程序,这取决于分发 cookie,以便我可以登录。我发现使用 CookieManager 将允许我的 URLConnection 至少收集这些 cookie,但是如
我正在使用 cookiemanager setcookie API 设置 cookie,当我执行 cookiemanager getcookie 时,我没有获取域和到期日期,下面是我的代码。 Stri
让我们为 cookie 存储做准备: CookieSyncManager.createInstance(getApplicationContext()); CookieSyncManager.getI
在我的 android 应用程序中,我有一个 webview。它从多个域加载 URL。我需要删除特定域中的所有 cookie。我想保留来自其他域的 cookie。但是我需要从一个域中删除所有 cook
在我的应用程序中,我从 HttpGet 请求中获取两个 cookie,并将它们存储在 CookieManager 中,如下所示: //Clear old cookies CookieManager.g
下面是我的代码,用于在 android 应用程序中获取一些 cookie 后身份验证。 String url = "https://host:port/sso/SSOServlet"; BasicCo
我需要将一个具有 native 登录屏幕的应用程序与在 web View (混合应用程序)内运行的应用程序的其余部分集成。这听起来像是一种常见的方法,但我在将 session 数据(cookie)从
OkHttpClient client = new OkHttpClient(); CookieManager cookieManager = new CookieManager(); cookieM
我使用以下命令向站点发出 HTTP 请求: //第一次调用服务器时执行 static { cookieManager = new CookieManager(); co
我知道 CookieManager 的存在, 但如何只删除域的 cookie? 有人可以帮我处理一些代码 fragment 吗? 最佳答案 public void clearCookies(Strin
对于 Android CookieManager类有一个方法——getCookie(String url) . 为此,我们需要知道正确的 url。 有没有办法获取 CookieManager 中的所有
如何将 cookie 从 Web 浏览器放入 Indy CookieManager 以进行 Http 请求。 我登录到这样的网站后会收到 cookie.. 测试项目 = http://www.mega
我正在使用 Spring 的 WebServiceGatewaySupport 连接到供应商的 SOAP Web 服务。该服务的要求之一是客户端必须维护服务器发送的 session cookie。 我
我是一名优秀的程序员,十分优秀!