【问题标题】:Python not recognizing cookies in request headerPython 无法识别请求标头中的 cookie
【发布时间】:2015-10-02 12:46:15
【问题描述】:

在工作中,我们一直在开发一个 python 应用程序(特别是 django),它似乎间歇性地表现得好像无法识别请求中发送的某些 cookie。

问题并不总是发生,但一旦发生,它似乎会无限期地持续存在。有时可以通过清除 cookie 并重新加载页面来解决问题。

这些 cookie 都是有效的(尽管有很多 3rd-party 混合在一起)并且在服务器和浏览器都支持的最大大小范围内。

【问题讨论】:

    标签: python django python-2.7 python-3.x cookies


    【解决方案1】:

    解决方案

    如果您的应用程序需要使用“SimpleCookie”(Python 库和框架广泛使用)来解释 Python 中的“Cookie”标头,并且您的网站域设置了超出您控制范围的 cookie,请避免出现问题的 Python 版本#22931 (https://bugs.python.org/issue22931) 正在播放中。

    该错误存在于 3.3.x、3.4.x 和 3.5.x 以及 2.7.9 的多个版本中。

    详情

    问题的诊断结果相当简单,但我想我会在这里使用更通用的语言来分享它,因为搜索问题并没有产生任何有用的结果,直到它被缩小到存在特定的 几个cookies中的有效个字符。

    在 Python 2.7.9(和 3.x 的多个版本)中,存在一个错误,即其值中带有“[”或“]”的 cookie 会导致对“Cookie”标头的解析静默失败。由于方括号是 cookie 值 (http://www.rfc-editor.org/rfc/rfc6265.txt) 的有效字符,并且通常用于 3rd 方库中,因此该问题可能不利于 Web 应用程序中的 cookie 驱动功能。

    这是特别难以捉摸的,因为只有在尝试解析值中带有方括号的第一个 cookie 时,cookie 解析才会终止。这意味着,如果 Cookie 碰巧以不同的顺序发送,则可能不会出现问题。

    例如

    如果请求标头的格式为Cookie: important_cookie=foobar; bad_character=[,那么“important_cookie”的值将在应用程序中可用 - 但是如果请求标头已 Cookie: bad_character=[; important_cookie=foobar.


    一旦您知道是方括号引起了问题,就很容易找到 Python 中报告的潜在错误,但深入研究潜在问题可能是一件苦差事。

    【讨论】:

      猜你喜欢
      • 2019-12-18
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 2020-01-21
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多