diff --git a/uvicorn/protocols/http/h11_impl.py b/uvicorn/protocols/http/h11_impl.py
index 9f6931e..c2764b0 100644
--- a/uvicorn/protocols/http/h11_impl.py
+++ b/uvicorn/protocols/http/h11_impl.py
@@ -468,10 +468,7 @@ class RequestResponseCycle:
             self.waiting_for_100_continue = False
 
             status_code = message["status"]
-            message_headers = cast(
-                List[Tuple[bytes, bytes]], message.get("headers", [])
-            )
-            headers = self.default_headers + message_headers
+            headers = self.default_headers + list(message.get("headers", []))
 
             if CLOSE_HEADER in self.scope["headers"] and CLOSE_HEADER not in headers:
                 headers = headers + [CLOSE_HEADER]

diff --git a/tests/protocols/test_http.py b/tests/protocols/test_http.py
index 79946ad..8db2795 100644
--- a/tests/protocols/test_http.py
+++ b/tests/protocols/test_http.py
@@ -966,3 +966,17 @@ async def test_return_close_header(protocol_cls, close_header: bytes):
     assert b"content-type: text/plain" in protocol.transport.buffer
     assert b"content-length: 12" in protocol.transport.buffer
     assert close_header in protocol.transport.buffer
+
+
+@pytest.mark.anyio
+@pytest.mark.parametrize("protocol_cls", HTTP_PROTOCOLS)
+async def test_iterator_headers(protocol_cls):
+    async def app(scope, receive, send):
+        headers = iter([(b"x-test-header", b"test value")])
+        await send({"type": "http.response.start", "status": 200, "headers": headers})
+        await send({"type": "http.response.body", "body": b""})
+
+    protocol = get_connected_protocol(app, protocol_cls)
+    protocol.data_received(SIMPLE_GET_REQUEST)
+    await protocol.loop.run_one()
+    assert b"x-test-header: test value" in protocol.transport.buffer

Uvicorn assumes that `HTTPResponseStartEvent.headers` is a `List`
### Discussed in https://github.com/encode/uvicorn/discussions/1779

<div type='discussions-op-text'>

<sup>Originally posted by **rijenkii** November 27, 2022</sup>
According to the spec and asgiref, `HTTPResponseStartEvent.headers` is `Iterable[Tuple[bytes, bytes]]`.

But, if `http.response.start` is sent like this:
```python
headers: dict
await send({
  "type": "http.response.start",
  "status": status,
  "headers": headers.items(),
})
```

Uvicorn fails with
```
  File ".../uvicorn/protocols/http/h11_impl.py", line 474, in send
    headers = self.default_headers + message_headers
              ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
TypeError: can only concatenate list (not "dict_items") to list
```

Relevant Uvicorn code: https://github.com/encode/uvicorn/blob/782f17e3855d5f36ce69d55427e74ca7f9b998c5/uvicorn/protocols/http/h11_impl.py#L471-L474

---

Potential fix may just be this:
```python
message_headers = list(message.get("headers", [])) 
```</div>
tests/protocols/test_http.py::test_iterator_headers[H11Protocol]
tests/protocols/test_http.py::test_get_request[H11Protocol] tests/protocols/test_http.py::test_get_request[HttpToolsProtocol] tests/protocols/test_http.py::test_request_logging[H11Protocol-/] tests/protocols/test_http.py::test_request_logging[H11Protocol-/?foo] tests/protocols/test_http.py::test_request_logging[H11Protocol-/?foo=bar] tests/protocols/test_http.py::test_request_logging[H11Protocol-/?foo=bar&baz=1] tests/protocols/test_http.py::test_request_logging[HttpToolsProtocol-/] tests/protocols/test_http.py::test_request_logging[HttpToolsProtocol-/?foo] tests/protocols/test_http.py::test_request_logging[HttpToolsProtocol-/?foo=bar] tests/protocols/test_http.py::test_request_logging[HttpToolsProtocol-/?foo=bar&baz=1] tests/protocols/test_http.py::test_head_request[H11Protocol] tests/protocols/test_http.py::test_head_request[HttpToolsProtocol] tests/protocols/test_http.py::test_post_request[H11Protocol] tests/protocols/test_http.py::test_post_request[HttpToolsProtocol] tests/protocols/test_http.py::test_keepalive[H11Protocol] tests/protocols/test_http.py::test_keepalive[HttpToolsProtocol] tests/protocols/test_http.py::test_keepalive_timeout[H11Protocol] tests/protocols/test_http.py::test_keepalive_timeout[HttpToolsProtocol] tests/protocols/test_http.py::test_close[H11Protocol] tests/protocols/test_http.py::test_close[HttpToolsProtocol] tests/protocols/test_http.py::test_chunked_encoding[H11Protocol] tests/protocols/test_http.py::test_chunked_encoding[HttpToolsProtocol] tests/protocols/test_http.py::test_chunked_encoding_empty_body[H11Protocol] tests/protocols/test_http.py::test_chunked_encoding_empty_body[HttpToolsProtocol] tests/protocols/test_http.py::test_chunked_encoding_head_request[H11Protocol] tests/protocols/test_http.py::test_chunked_encoding_head_request[HttpToolsProtocol] tests/protocols/test_http.py::test_pipelined_requests[H11Protocol] tests/protocols/test_http.py::test_pipelined_requests[HttpToolsProtocol] tests/protocols/test_http.py::test_undersized_request[H11Protocol] tests/protocols/test_http.py::test_undersized_request[HttpToolsProtocol] tests/protocols/test_http.py::test_oversized_request[H11Protocol] tests/protocols/test_http.py::test_oversized_request[HttpToolsProtocol] tests/protocols/test_http.py::test_large_post_request[H11Protocol] tests/protocols/test_http.py::test_large_post_request[HttpToolsProtocol] tests/protocols/test_http.py::test_invalid_http[H11Protocol] tests/protocols/test_http.py::test_invalid_http[HttpToolsProtocol] tests/protocols/test_http.py::test_app_exception[H11Protocol] tests/protocols/test_http.py::test_app_exception[HttpToolsProtocol] tests/protocols/test_http.py::test_exception_during_response[H11Protocol] tests/protocols/test_http.py::test_exception_during_response[HttpToolsProtocol] tests/protocols/test_http.py::test_no_response_returned[H11Protocol] tests/protocols/test_http.py::test_no_response_returned[HttpToolsProtocol] tests/protocols/test_http.py::test_partial_response_returned[H11Protocol] tests/protocols/test_http.py::test_partial_response_returned[HttpToolsProtocol] tests/protocols/test_http.py::test_duplicate_start_message[H11Protocol] tests/protocols/test_http.py::test_duplicate_start_message[HttpToolsProtocol] tests/protocols/test_http.py::test_missing_start_message[H11Protocol] tests/protocols/test_http.py::test_missing_start_message[HttpToolsProtocol] tests/protocols/test_http.py::test_message_after_body_complete[H11Protocol] tests/protocols/test_http.py::test_message_after_body_complete[HttpToolsProtocol] tests/protocols/test_http.py::test_value_returned[H11Protocol] tests/protocols/test_http.py::test_value_returned[HttpToolsProtocol] tests/protocols/test_http.py::test_early_disconnect[H11Protocol] tests/protocols/test_http.py::test_early_disconnect[HttpToolsProtocol] tests/protocols/test_http.py::test_early_response[H11Protocol] tests/protocols/test_http.py::test_early_response[HttpToolsProtocol] tests/protocols/test_http.py::test_read_after_response[H11Protocol] tests/protocols/test_http.py::test_read_after_response[HttpToolsProtocol] tests/protocols/test_http.py::test_http10_request[H11Protocol] tests/protocols/test_http.py::test_http10_request[HttpToolsProtocol] tests/protocols/test_http.py::test_root_path[H11Protocol] tests/protocols/test_http.py::test_root_path[HttpToolsProtocol] tests/protocols/test_http.py::test_raw_path[H11Protocol] tests/protocols/test_http.py::test_raw_path[HttpToolsProtocol] tests/protocols/test_http.py::test_max_concurrency[H11Protocol] tests/protocols/test_http.py::test_max_concurrency[HttpToolsProtocol] tests/protocols/test_http.py::test_shutdown_during_request[H11Protocol] tests/protocols/test_http.py::test_shutdown_during_request[HttpToolsProtocol] tests/protocols/test_http.py::test_shutdown_during_idle[H11Protocol] tests/protocols/test_http.py::test_shutdown_during_idle[HttpToolsProtocol] tests/protocols/test_http.py::test_100_continue_sent_when_body_consumed[H11Protocol] tests/protocols/test_http.py::test_100_continue_sent_when_body_consumed[HttpToolsProtocol] tests/protocols/test_http.py::test_100_continue_not_sent_when_body_not_consumed[H11Protocol] tests/protocols/test_http.py::test_100_continue_not_sent_when_body_not_consumed[HttpToolsProtocol] tests/protocols/test_http.py::test_supported_upgrade_request[H11Protocol] tests/protocols/test_http.py::test_supported_upgrade_request[HttpToolsProtocol] tests/protocols/test_http.py::test_unsupported_ws_upgrade_request[H11Protocol] tests/protocols/test_http.py::test_unsupported_ws_upgrade_request[HttpToolsProtocol] tests/protocols/test_http.py::test_unsupported_ws_upgrade_request_warn_on_auto[H11Protocol] tests/protocols/test_http.py::test_unsupported_ws_upgrade_request_warn_on_auto[HttpToolsProtocol] tests/protocols/test_http.py::test_http2_upgrade_request[auto-H11Protocol] tests/protocols/test_http.py::test_http2_upgrade_request[auto-HttpToolsProtocol] tests/protocols/test_http.py::test_http2_upgrade_request[none-H11Protocol] tests/protocols/test_http.py::test_http2_upgrade_request[none-HttpToolsProtocol] tests/protocols/test_http.py::test_http2_upgrade_request[websockets-H11Protocol] tests/protocols/test_http.py::test_http2_upgrade_request[websockets-HttpToolsProtocol] tests/protocols/test_http.py::test_http2_upgrade_request[wsproto-H11Protocol] tests/protocols/test_http.py::test_http2_upgrade_request[wsproto-HttpToolsProtocol] tests/protocols/test_http.py::test_scopes[H11Protocol-asgi3app-expected_scopes0] tests/protocols/test_http.py::test_scopes[H11Protocol-asgi2app-expected_scopes1] tests/protocols/test_http.py::test_scopes[HttpToolsProtocol-asgi3app-expected_scopes0] tests/protocols/test_http.py::test_scopes[HttpToolsProtocol-asgi2app-expected_scopes1] tests/protocols/test_http.py::test_invalid_http_request[H11Protocol-invalid-method] tests/protocols/test_http.py::test_invalid_http_request[H11Protocol-invalid-path] tests/protocols/test_http.py::test_invalid_http_request[H11Protocol-invalid-http-version] tests/protocols/test_http.py::test_invalid_http_request[HttpToolsProtocol-invalid-method] tests/protocols/test_http.py::test_invalid_http_request[HttpToolsProtocol-invalid-path] tests/protocols/test_http.py::test_invalid_http_request[HttpToolsProtocol-invalid-http-version] tests/protocols/test_http.py::test_fragmentation tests/protocols/test_http.py::test_huge_headers_h11protocol_failure tests/protocols/test_http.py::test_huge_headers_httptools_will_pass tests/protocols/test_http.py::test_huge_headers_h11protocol_failure_with_setting tests/protocols/test_http.py::test_huge_headers_httptools tests/protocols/test_http.py::test_huge_headers_h11_max_incomplete tests/protocols/test_http.py::test_return_close_header[HttpToolsProtocol-connection: tests/protocols/test_http.py::test_return_close_header[H11Protocol-Connection: tests/protocols/test_http.py::test_iterator_headers[HttpToolsProtocol]