用于维护与django版本的前向兼容性的实用程序。
django-birdcage的Python项目详细描述
部署大型网站时,操作团队有时会跨整个web服务器集合的子集部署新代码。这种方法称为“金丝雀”部署。大多数用户将继续使用旧代码服务;只有那些点击“金丝雀”机器的用户才会看到新代码。
大型网站往往会使用金丝雀时,认为升级的风险很高。例如,在复杂的站点上将django版本从1.8 lts升级到1.11 lts通常会被认为是一个危险的升级;在将所有web服务器切换到升级的代码库之前,将使用canary测试升级是否按预期工作。
不幸的是,虽然django有很好的向后兼容性保证,但canary部署也需要向前兼容性。这是因为一个用户可能有一个请求服务于新的代码库,但随后的更新服务于旧的代码库。如果信息(如安全令牌)在不同版本之间不同时向后兼容和向前兼容,一些用户会在新旧代码基之间来回移动时看到错误。
birdcage是一个由工具组成的项目,通过为django中已知的问题提供forwards兼容的垫片来帮助您管理canary升级。
鸟笼的地址是什么?
django 1.10:盐渍csrf令牌
django 1.10 introduced a change to CSRF handling以防止BREACH攻击。django 1.10+可以解释django<;1.10 csrf令牌;但是,如果向用户颁发了django 1.10+csrf令牌,则django 1.8将拒绝该令牌。
为了解决这个问题,birdcage提供了django 1.8的csrfviewmiddleware的一个版本,它可以解释django1.10的csrf令牌。
- 在django 1.8代码库的设置中,将MIDDLEWARE设置中的django.middleware.csrf.CsrfViewMiddleware替换为birdcage.v1_11.csrf.CsrfViewMiddleware。
- 在django 1.10+代码库中,继续使用django csrfviewmiddleware。
为什么叫鸟笼?
好吧,你得把金丝雀放在某处,以保证它们的安全……:-)