File tree Expand file tree Collapse file tree 2 files changed +21
-1
lines changed
google/cloud/logging_v2/handlers Expand file tree Collapse file tree 2 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -104,10 +104,17 @@ def get_request_data_from_django():
104104 if request is None :
105105 return None , None , None , False
106106
107+ # Django can raise django.core.exceptions.DisallowedHost here for a
108+ # malformed HTTP_HOST header. But we don't want to import Django modules.
109+ try :
110+ request_url = request .build_absolute_uri ()
111+ except Exception :
112+ request_url = None
113+
107114 # build http_request
108115 http_request = {
109116 "requestMethod" : request .method ,
110- "requestUrl" : request . build_absolute_uri () ,
117+ "requestUrl" : request_url ,
111118 "userAgent" : request .META .get (_DJANGO_USERAGENT_HEADER ),
112119 "protocol" : request .META .get (_PROTOCOL_HEADER ),
113120 }
Original file line number Diff line number Diff line change @@ -242,6 +242,19 @@ def test_http_request_sparse(self):
242242 self .assertEqual (http_request ["requestUrl" ], expected_path )
243243 self .assertEqual (http_request ["protocol" ], "HTTP/1.1" )
244244
245+ def test_invalid_host_header (self ):
246+ from django .test import RequestFactory
247+ from google .cloud .logging_v2 .handlers .middleware import request
248+
249+ invalid_http_host = "testserver%7d"
250+ django_request = RequestFactory ().put ("/" , HTTP_HOST = invalid_http_host )
251+ middleware = request .RequestMiddleware (None )
252+ middleware (django_request )
253+ http_request , * _ = self ._call_fut ()
254+ self .assertEqual (http_request ["requestMethod" ], "PUT" )
255+ self .assertIsNone (http_request ["requestUrl" ])
256+ self .assertEqual (http_request ["protocol" ], "HTTP/1.1" )
257+
245258
246259class Test_get_request_data (unittest .TestCase ):
247260 @staticmethod
You can’t perform that action at this time.
0 commit comments