【问题标题】:parsing cookie which has no equal sign (=)解析没有等号 (=) 的 cookie
【发布时间】:2013-06-21 20:36:18
【问题描述】:

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

授权用户后,我将获取所有 cookie 并保存在本地。然后,我会将这些 cookie 通过CookieManagerCookieSyncManager 发送到webView。用户浏览某个页面后,服务器返回相同的 cookie,但这次添加了 一个新值。从那时起,我需要能够获取 cookie 的那部分并同步它。

请注意,我不能获取新的 cookie 并将其替换为以前的,而是在 cookie 中找到新的内容并将其添加到我们的当前的中。

我看到了 cookie 解析问题和解决方案。但是服务器返回的与那些标准的 value-pair 不同。这是 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,还是我必须考虑编写一些正则表达式?感谢您的帮助!

【问题讨论】:

    标签: java android parsing cookies


    【解决方案1】:

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

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


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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多