Requests: 逗号以防万一:加入多个 Set-Cookie 标头

创建于 2017-04-07  ·  3评论  ·  资料来源: psf/requests

许多网络应用程序在多个 Set-Cookie 标头中发送 cookie,一个标头对应一个 cookie。 请求将这些标头加入一个用逗号分隔的大标头中。

从同一个 webapp 到 requests.get

Set-Cookie: ASP.NET_SessionId=token1; path=/; HttpOnly
Set-Cookie: Cookie1=token2; path=/ecp
Set-Cookie: X-BEResource=WIN-RBFR0BDA7V7.testlab.net~1; path=/ecp/15.0.516.30; HttpOnly
Set-Cookie: X-BackEndCookie=token3; expires=Mon, 03-Apr-2017 12:25:07 GMT; path=/ecp; HttpOnly

在请求中:
resp.headers 这看起来像

Set-Cookie: ASP.NET_SessionId=token1; path=/; HttpOnly,    
  Cookie1=token2; path=/ecp, 
  X-BEResource=WIN-RBFR0BDA7V7.testlab.net~1; path=/ecp/15.0.516.30; HttpOnly, 
  X-BackEndCookie=token3; expires=Thu, 06-Apr-2017 08:27:22 GMT; path=/ecp; HttpOnly

Firefox、IE、Chrome 无效解释此 cookie,因为分隔符是逗号但在字段 EXPIRES 逗号分隔日期和日期。

修改流量的主要问题。 在我看来,服务器发送多个标头库必须返回多个标头

最有用的评论

Requests 不承诺以从服务器收到的形式保留标头。 现在,我强烈建议您使用 cookiejar Requests 来存储 cookie,而不是从头中提取它们:我们正确地将它们插入那里。

从长远来看,我们可能应该添加一个修复程序来排除Set-Cookie标头以这种方式加入。

所有3条评论

Requests 不承诺以从服务器收到的形式保留标头。 现在,我强烈建议您使用 cookiejar Requests 来存储 cookie,而不是从头中提取它们:我们正确地将它们插入那里。

从长远来看,我们可能应该添加一个修复程序来排除Set-Cookie标头以这种方式加入。

这让我们很受打击,并花费了我们好几个小时。 我想投票保留Set-Cookie不变。 为什么请求总是摆弄标题? 有什么好的理由吗? 恕我直言,它只会让每个人的事情复杂化。 我错过了什么?
感谢您的出色工作!

嗨,有一种方法可以使用https://github.com/Ousret/kiss-headers正确解析标头requests将无法很快更改标头的表示形式。

此页面是否有帮助?
0 / 5 - 0 等级