Blob Blame History Raw
From 06f390d522afb6d2d71bb601c2060a9fabe3f7de Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Mon, 19 Jul 2021 15:41:23 -0700
Subject: [PATCH] Fix disabling of location header autocorrect for werkzeug 2+
 (#647)

In werkzeug 2.0.0 and later, the Location header autocorrection
moved from BaseResponse to Response, so we need to set
`autocorrect_location_header = False` in `Response` not
`BaseResponse`. From 2.1.0, BaseResponse is removed and importing
it is an error, so we can't support both any more.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
 httpbin/core.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/httpbin/core.py b/httpbin/core.py
index 66a2ed6..fd2842c 100644
--- a/httpbin/core.py
+++ b/httpbin/core.py
@@ -19,7 +19,7 @@ from flask import Flask, Response, request, render_template, redirect, jsonify a
 from six.moves import range as xrange
 from werkzeug.datastructures import WWWAuthenticate, MultiDict
 from werkzeug.http import http_date
-from werkzeug.wrappers import BaseResponse
+from werkzeug.wrappers import Response as WzResponse
 from werkzeug.http import parse_authorization_header
 from raven.contrib.flask import Sentry
 
@@ -48,7 +48,9 @@ def jsonify(*args, **kwargs):
     return response
 
 # Prevent WSGI from correcting the casing of the Location header
-BaseResponse.autocorrect_location_header = False
+# and forcing it to be absolute.
+WzResponse.autocorrect_location_header = False
+
 
 # Find the correct template folder when running from a different location
 tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
-- 
2.36.0