【发布时间】:2019-11-02 05:22:42
【问题描述】:
我有一个使用 Python Twisted 的现有 Web 应用程序。客户端是嵌入式设备而不是人类。所以我偶尔会遇到这些设备中经常过时和简单化的 http 客户端的怪癖。该应用程序依赖于会话 cookie,到目前为止我还没有遇到任何问题。
最近我添加了一种新型设备,但我遇到了会话匹配无法正常工作的问题。
我正在使用来自 twisted.web.server Session 类的 getSession()。
这个特定的客户端设备似乎以 getSession 无法与会话匹配的格式返回 Cookie 标头(因此在收到的每个请求上都会创建一个新会话)。
我不确定这是 Twisted 的问题还是客户端设备如何格式化 cookie 标头的问题,特别是它如何重新格式化 Path 属性。
工作客户端设备的行为是这样的。
Twisted 发送的 Set-Cookie 标头:
Set-Cookie: TWISTED_SESSION=10d4ed8a01ad1459c53018953343f2d357e9ac5015a86ab714fd09eb12b06c4c; Path=/
以及客户端在下一次请求时发送的结果 Cookie 标头:
Cookie: $Version="0"; TWISTED_SESSION=10d4ed8a01ad1459c53018953343f2d357e9ac5015a86ab714fd09eb12b06c4c;$Path=/
现在是非工作客户端,来自 Twisted Web 服务器的 Set-Cookie 标头:
Set-Cookie: TWISTED_SESSION=fe5abac62eb577176e94d2a98d46298d6c093d425e51583554a4ad98e3cff8fb; Path=/
和Twisted Session不匹配的结果Cookie头:
Cookie: TWISTED_SESSION=fe5abac62eb577176e94d2a98d46298d6c093d425e51583554a4ad98e3cff8fb/
只是将路径“/”放在 TWISTE_SESSION 属性的末尾。
我有点不知道如何进一步诊断,我试图重写 Cookie 标头并从末尾删除 / 但这没有帮助。
我也不确定客户的行为是否正确。这似乎不寻常,但我不知道它所做的是否在技术上是错误的。
【问题讨论】:
标签: python twisted twisted.web