4

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

授权用户后,我将获取所有 cookie 并将它们保存在本地。然后,我会将这些 cookie 放入webViewvia CookieManager, CookieSyncManager。用户浏览某个页面后,服务器返回相同的 cookie,但这次添加了一个新值。从那时起,我需要能够获取 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,或者我是否必须考虑编写一些正则表达式?谢谢您的帮助!

4

1 回答 1

4

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

因此,实现是否能够处理丢失的等号字符是没有实际意义的。没有等号的 cookie 是无效的。您的应用程序……或任何设置这些 cookie 的程序……已损坏,应予以修复。


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


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

于 2013-06-25T06:45:35.017 回答