From 06f390d522afb6d2d71bb601c2060a9fabe3f7de Mon Sep 17 00:00:00 2001 From: Adam Williamson 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 --- 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