diff --git a/feedparser/api.py b/feedparser/api.py
index 1c9cf15d..a9915194 100644
--- a/feedparser/api.py
+++ b/feedparser/api.py
@@ -221,7 +221,10 @@ def parse(
file.seek(initial_file_offset)
# overwrite existing headers using response_headers
- result["headers"].update(response_headers or {})
+ # Lowercase the HTTP header keys for comparisons per RFC 2616.
+ response_headers = response_headers or {}
+ extra_headers = {k.lower(): v for k, v in response_headers.items()}
+ result["headers"].update(extra_headers)
try:
_parse_file_inplace(
diff --git a/tests/test_parse_parameters.py b/tests/test_parse_parameters.py
index 76c7d204..492dd273 100644
--- a/tests/test_parse_parameters.py
+++ b/tests/test_parse_parameters.py
@@ -34,6 +34,16 @@ def test_sanitize_html_off():
assert d.entries[0].content[0].value == ''
+def test_response_headers_case_insensitive():
+ d = feedparser.parse(
+ io.BytesIO(feed_xml),
+ response_headers={"CoNtEnT-LoCaTiOn": "http://example.com/feed"},
+ )
+ assert d.entries[1].content[0].value == (
+ 'boo'
+ )
+
+
def test_resolve_relative_uris_default():
d = feedparser.parse(
io.BytesIO(feed_xml),