{"title":"Django 2.2.3 release notes","version":"dev","locale":"en","docname":"releases/2.2.3","url":"/en/dev/releases/2.2.3/","canonical":"https://djangodocs.dev/en/dev/releases/2.2.3/","summary":"Django 2.2.3 fixes a security issue and several bugs in 2.2.2. Also, the latest string translations from Transifex are incorporated.","html":"<h1>Django 2.2.3 release notes<a class=\"heading-anchor\" href=\"#django-2-2-3-release-notes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><em>July 1, 2019</em></p>\n<p>Django 2.2.3 fixes a security issue and several bugs in 2.2.2. Also, the latest\nstring translations from Transifex are incorporated.</p>\n<section id=\"cve-2019-12781-incorrect-http-detection-with-reverse-proxy-connecting-via-https\">\n<h2>CVE-2019-12781: Incorrect HTTP detection with reverse-proxy connecting via HTTPS<a class=\"heading-anchor\" href=\"#cve-2019-12781-incorrect-http-detection-with-reverse-proxy-connecting-via-https\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>When deployed behind a reverse-proxy connecting to Django via HTTPS,\n<a class=\"reference internal\" href=\"/en/dev/ref/request-response/#django.http.HttpRequest.scheme\" title=\"django.http.HttpRequest.scheme\"><code class=\"xref py py-attr docutils literal notranslate\">django.http.HttpRequest.scheme</code></a> would incorrectly detect client\nrequests made via HTTP as using HTTPS. This entails incorrect results for\n<a class=\"reference internal\" href=\"/en/dev/ref/request-response/#django.http.HttpRequest.is_secure\" title=\"django.http.HttpRequest.is_secure\"><code class=\"xref py py-meth docutils literal notranslate\">is_secure()</code></a>, and\n<a class=\"reference internal\" href=\"/en/dev/ref/request-response/#django.http.HttpRequest.build_absolute_uri\" title=\"django.http.HttpRequest.build_absolute_uri\"><code class=\"xref py py-meth docutils literal notranslate\">build_absolute_uri()</code></a>, and that HTTP\nrequests would not be redirected to HTTPS in accordance with\n<a class=\"reference internal\" href=\"/en/dev/ref/settings/#std-setting-SECURE_SSL_REDIRECT\"><code class=\"xref std std-setting docutils literal notranslate\">SECURE_SSL_REDIRECT</code></a>.</p>\n<p><code class=\"docutils literal notranslate\">HttpRequest.scheme</code> now respects <a class=\"reference internal\" href=\"/en/dev/ref/settings/#std-setting-SECURE_PROXY_SSL_HEADER\"><code class=\"xref std std-setting docutils literal notranslate\">SECURE_PROXY_SSL_HEADER</code></a>, if it\nis configured, and the appropriate header is set on the request, for both HTTP\nand HTTPS requests.</p>\n<p>If you deploy Django behind a reverse-proxy that forwards HTTP requests, and\nthat connects to Django via HTTPS, be sure to verify that your application\ncorrectly handles code paths relying on <code class=\"docutils literal notranslate\">scheme</code>, <code class=\"docutils literal notranslate\">is_secure()</code>,\n<code class=\"docutils literal notranslate\">build_absolute_uri()</code>, and <code class=\"docutils literal notranslate\">SECURE_SSL_REDIRECT</code>.</p>\n<section id=\"bugfixes\">\n<h3>Bugfixes<a class=\"heading-anchor\" href=\"#bugfixes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p>Fixed a regression in Django 2.2 where <a class=\"reference internal\" href=\"/en/dev/ref/models/querysets/#django.db.models.Avg\" title=\"django.db.models.Avg\"><code class=\"xref py py-class docutils literal notranslate\">Avg</code></a>,\n<a class=\"reference internal\" href=\"/en/dev/ref/models/querysets/#django.db.models.StdDev\" title=\"django.db.models.StdDev\"><code class=\"xref py py-class docutils literal notranslate\">StdDev</code></a>, and <a class=\"reference internal\" href=\"/en/dev/ref/models/querysets/#django.db.models.Variance\" title=\"django.db.models.Variance\"><code class=\"xref py py-class docutils literal notranslate\">Variance</code></a>\ncrash with <code class=\"docutils literal notranslate\">filter</code> argument (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30542\">#30542</a>).</p></li>\n<li><p>Fixed a regression in Django 2.2.2 where auto-reloader crashes with\n<code class=\"docutils literal notranslate\">AttributeError</code>, e.g. when using <code class=\"docutils literal notranslate\">ipdb</code> (<a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/30588\">#30588</a>).</p></li>\n</ul>\n</section>\n</section>","rootId":"django-2-2-3-release-notes","toc":[{"title":"CVE-2019-12781: Incorrect HTTP detection with reverse-proxy connecting via HTTPS","anchor":"cve-2019-12781-incorrect-http-detection-with-reverse-proxy-connecting-via-https","children":[{"title":"Bugfixes","anchor":"bugfixes","children":[]}]}],"breadcrumbs":[{"docname":"releases/index","title":"Release notes","url":"/en/dev/releases/"}],"prev":{"docname":"releases/2.2.4","title":"Django 2.2.4 release notes","url":"/en/dev/releases/2.2.4/"},"next":{"docname":"releases/2.2.2","title":"Django 2.2.2 release notes","url":"/en/dev/releases/2.2.2/"},"formats":{"html":"/en/dev/releases/2.2.3/","markdown":"/en/dev/releases/2.2.3.md","json":"/en/dev/releases/2.2.3.json"},"source":"https://github.com/django/django/blob/main/docs/releases/2.2.3.txt","official":"https://docs.djangoproject.com/en/dev/releases/2.2.3/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2"],"inLocales":["en"]}