解析没有等号的cookie(=)

时间:2013-06-25 06:37:34

标签: java android parsing cookies

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

授权用户后,我将获取所有Cookie并将其保存在本地。然后,我会通过webViewCookieManager将这些Cookie放到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

iiiiii并在此示例中添加了以下值。

问题是,是否有任何解析器可以处理这种cookie或者我是否需要考虑编写一些regEx?谢谢你的帮助!

1 个答案:

答案 0 :(得分:4)

规范(RFC 6265)表示cookie是名称 - 值对。根据RFC中的语法,等号('=')是必需的。

因此,实现是否能应对缺少的等号符号是没有意义的。没有等号的cookie是INVALID。

,您的应用程序......或者设置这些Cookie的任何内容......都已被破坏。


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


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