我正在开发客户端应用程序。大多数应用程序都适用于 WebView。它从 Web 服务器加载多个页面。
授权用户后,我会获取所有cookies并保存在本地。然后,我将通过 CookieManager
、CookieSyncManager
将这些 cookie 放入 webView
。用户浏览某个页面后,服务器返回相同的 cookie,但这次添加了一个新值。从那时起,我需要能够获取 cookie 的那部分并同步它。
请注意,我不能获取新的 cookie 并将其替换为以前的 cookie,而是找到 cookie 中的新内容并将其添加到我们的当前。
我看到了 cookie 解析问题和解决方案。但是服务器返回的内容与那些标准的值对 并不相似。这是 cookie 的样子
PHPSESSID=27dd72de72e1643727c4ddb150b2f988; aes_session=a%3A12%3A%7Bs%3A10%3A%22aaaaaaaa%22%3Bs%3A32%3A%22e116b84c302d763a4f759caa5d178455%22%3Bs%3A10%3A%22bbbbbbb%22%3Bs%3A15%3A%22111.111.111.111%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A40%3A%22Apache-HttpClient%2FUNAVAILABLE+%28java+1.4%29%22%3Bs%3A13%3A%22jjjjjjjj%22%3Bi%3A1372138481%3Bs%3A9%3A%22cccccc%22%3Bs%3A0%3A%22%22%3Bs%3A4%3A%22fail%22%3Bs%3A7%3A%22ddddddd%22%3Bs%3A2%3A%22id%22%3Bs%3A2%3A%2231%22%3Bs%3A8%3A%22eeeeee%22%3Bs%3A7%3A%22ffffffff%22%3Bs%3A4%3A%22ggggggg%22%3Bs%3A9%3A%22hhhhhh%22%3Bs%3A7%3A%22%22%3Bs%3A1%3A%221%22%3Bs%3A6%3A%22iiiiii%22%3Bs%3A1%3A
iiiiii
及其后面的值被添加到这个例子中。
问题是,是否有任何解析器可以处理这种 cookie,或者我是否必须考虑编写一些 regEx?感谢您的帮助!
最佳答案
规范 ( RFC 6265 ) 说 cookie 是名称-值对。根据 RFC 中的语法,等号 ('=') 是强制性的。
因此,实现是否会处理丢失的等号字符是没有实际意义的。没有等号的 cookie 是无效的。您的应用程序……或任何设置这些 cookie 的应用程序……已损坏,应该修复。
FWIW,如果您想指定一个具有空值的名称/值对,在等号 ('=') 和分号 (';') 或 cookie 字符串的末尾之间没有任何内容是合法的。但是规范说“=”是强制性的。
(但是,让我对这个问题感到困惑的是,示例 cookie 似乎没有缺少 '=' 的示例......)
关于java - 解析没有等号(=)的cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17290700/