@@ -194,7 +194,7 @@ def process_request(self, request):
194194 # Read more about request.META here:
195195 # https://docs.djangoproject.com/en/3.0/ref/request-response/#django.http.HttpRequest.META
196196
197- if self ._excluded_urls . url_disabled (request . build_absolute_uri ( "?" ) ):
197+ if self ._url_is_disabled (request ):
198198 return
199199
200200 is_asgi_request = _is_asgi_request (request )
@@ -305,7 +305,7 @@ def process_request(self, request):
305305 def process_view (self , request , view_func , * args , ** kwargs ):
306306 # Process view is executed before the view function, here we get the
307307 # route template from request.resolver_match. It is not set yet in process_request
308- if self ._excluded_urls . url_disabled (request . build_absolute_uri ( "?" ) ):
308+ if self ._url_is_disabled (request ):
309309 return
310310
311311 if (
@@ -330,7 +330,7 @@ def process_view(self, request, view_func, *args, **kwargs):
330330 duration_attrs [HTTP_ROUTE ] = route
331331
332332 def process_exception (self , request , exception ):
333- if self ._excluded_urls . url_disabled (request . build_absolute_uri ( "?" ) ):
333+ if self ._url_is_disabled (request ):
334334 return
335335
336336 if self ._environ_activation_key in request .META .keys ():
@@ -340,7 +340,7 @@ def process_exception(self, request, exception):
340340 # pylint: disable=too-many-locals
341341 # pylint: disable=too-many-statements
342342 def process_response (self , request , response ):
343- if self ._excluded_urls . url_disabled (request . build_absolute_uri ( "?" ) ):
343+ if self ._url_is_disabled (request ):
344344 return response
345345
346346 is_asgi_request = _is_asgi_request (request )
@@ -453,6 +453,15 @@ def process_response(self, request, response):
453453
454454 return response
455455
456+ def _url_is_disabled (self , request ):
457+ """
458+ Avoid `request.get_host` to bypass Django's ALLOWED_HOST check
459+ """
460+ url = "{}://{}{}?" .format (
461+ request .scheme , request ._get_raw_host (), request .path
462+ )
463+ return self ._excluded_urls .url_disabled (url )
464+
456465
457466def _parse_duration_attrs (
458467 req_attrs , sem_conv_opt_in_mode = _StabilityMode .DEFAULT
0 commit comments