解析没有等号 (=) 的 cookie

bob*_*hox 5 java cookies parsing android

我正在开发一个客户端应用程序。大多数应用程序都适用于WebView配合使用。它从 Web 服务器加载多个页面。

授权用户后,我将获取所有cookie并将它们保存在本地。然后,我会将这些 cookie 放入webViewvia CookieManager, CookieSyncManager。用户浏览某个页面后,服务器返回相同的 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
Run Code Online (Sandbox Code Playgroud)

iiiiii本例中添加了以下值。

问题是,是否有任何解析器可以处理这种 cookie,或者我是否必须考虑编写一些正则表达式?感谢您的帮助!

Ste*_*n C 5

规范(RFC 6265 ) 规定 cookie 是名称-值对。根据 RFC 中的语法,等号('=')是强制性的。

因此,实现是否能够处理丢失的等号字符是没有意义的。没有等号的 cookie 是无效的。您的应用程序...或者任何设置这些cookie的东西...已损坏并且应该修复。


FWIW,如果您想指定具有空值的名称/值对,则在等号('=')和分号(';')或 cookie 字符串末尾之间没有任何内容是合法的。但规范说“=”是强制性的。


(然而,让我对这个问题感到困惑的是,示例 cookie 似乎没有缺少“=”的示例......)