From 9ac6292614a332ddc5d0868abe4a72f8f48bc7ac Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Tue, 30 Jun 2020 15:00:17 -0700 Subject: [PATCH] _header_x now defaults to empty string Prior to this a request to e.g. https://latest.datasette.io/fixtures/magic_parameters which did not include a User-Agent header would trigger a 500 error. --- datasette/default_magic_parameters.py | 2 +- tests/test_canned_queries.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/datasette/default_magic_parameters.py b/datasette/default_magic_parameters.py index b788fee8..0f8f397e 100644 --- a/datasette/default_magic_parameters.py +++ b/datasette/default_magic_parameters.py @@ -8,7 +8,7 @@ import time def header(key, request): key = key.replace("_", "-").encode("utf-8") headers_dict = dict(request.scope["headers"]) - return headers_dict[key].decode("utf-8") + return headers_dict.get(key, b"").decode("utf-8") def actor(key, request): diff --git a/tests/test_canned_queries.py b/tests/test_canned_queries.py index 2e064db1..c0219cb1 100644 --- a/tests/test_canned_queries.py +++ b/tests/test_canned_queries.py @@ -186,6 +186,7 @@ def magic_parameters_client(): [ ("_actor_id", "root"), ("_header_host", "localhost"), + ("_header_not_a_thing", ""), ("_cookie_foo", "bar"), ("_now_epoch", r"^\d+$"), ("_now_date_utc", r"^\d{4}-\d{2}-\d{2}$"),