diff --git a/tests/functional/docroot/with_headers.txt.sub.headers b/tests/functional/docroot/with_headers.txt.sub.headers index 4826221f55c1e3..71494fccf10f2b 100644 --- a/tests/functional/docroot/with_headers.txt.sub.headers +++ b/tests/functional/docroot/with_headers.txt.sub.headers @@ -3,3 +3,4 @@ Another-Header: {{$id:uuid()}} Same-Value-Header: {{$id}} Double-Header: PA Double-Header: SS +Content-Type: text/html diff --git a/tests/functional/test_handlers.py b/tests/functional/test_handlers.py index 5974b85566e51c..9189725cb25ecc 100644 --- a/tests/functional/test_handlers.py +++ b/tests/functional/test_handlers.py @@ -18,6 +18,7 @@ def test_GET(self): def test_headers(self): resp = self.request("/with_headers.txt") self.assertEqual(200, resp.getcode()) + self.assertEqual("text/html", resp.info()["Content-Type"]) self.assertEqual("PASS", resp.info()["Custom-Header"]) # This will fail if it isn't a valid uuid uuid.UUID(resp.info()["Another-Header"]) diff --git a/wptserve/handlers.py b/wptserve/handlers.py index 9f60fd0d722d79..c40321dfeabb4d 100644 --- a/wptserve/handlers.py +++ b/wptserve/handlers.py @@ -147,9 +147,12 @@ def __call__(self, request, response): raise HTTPException(404) def get_headers(self, request, path): - rv = self.default_headers(path) - rv.extend(self.load_headers(request, os.path.join(os.path.split(path)[0], "__dir__"))) - rv.extend(self.load_headers(request, path)) + rv = (self.load_headers(request, os.path.join(os.path.split(path)[0], "__dir__")) + + self.load_headers(request, path)) + + if not any(key.lower() == "content-type" for (key, _) in rv): + rv.insert(0, ("Content-Type", guess_content_type(path))) + return rv def load_headers(self, request, path): @@ -206,9 +209,6 @@ def get_range_data(self, f, byte_range): f.seek(byte_range.lower) return f.read(byte_range.upper - byte_range.lower) - def default_headers(self, path): - return [("Content-Type", guess_content_type(path))] - file_handler = FileHandler()