用于维护与django版本的前向兼容性的实用程序。

django-birdcage的Python项目详细描述


https://img.shields.io/pypi/pyversions/django-birdcage.svghttps://img.shields.io/pypi/v/django-birdcage.svghttps://img.shields.io/pypi/status/django-birdcage.svghttps://img.shields.io/pypi/l/django-birdcage.svghttps://travis-ci.org/freakboy3742/django-birdcage.svg?branch=master

部署大型网站时,操作团队有时会跨整个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。

为什么叫鸟笼?

好吧,你得把金丝雀放在某处,以保证它们的安全……:-)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java中ArrayList的超简单问题   Java 8在一段时间后过期   java如何创建具有用户定义维度的矩阵,并使用从上到下、从左到右的递增值填充它?   java从JDBC重启mysql   带有sqlite的java LiveData未更新UI   带有JDialog的java小程序在Mac OSX中未正确隐藏   java ActionListener无法从公共类引用数组?   java Apache Digester:NoSuchMethodException:没有这样的可访问方法   安卓中数据库中的java数据没有以正确的格式检索   java快速排序实现:使用random pivot时几乎排序   安卓 Java:高效的ArrayList过滤?   java如何在单独的文件中制作GUI程序   jasper报告如何从JSP或Java代码在JasperReport中传递参数值?