tldr; both HTTP/1.1 and HTTP/2 headers are case-insensitive.
According to RFC 7230 (HTTP/1.1):
Each header field consists of a case-insensitive field name followed by a colon (":"), optional leading whitespace, the field value, and optional trailing whitespace.
https://tools.ietf.org/html/rfc7230#section-3.2
Also, RFC 7540 (HTTP/2):
Just as in HTTP/1.x, header field names are strings of ASCII
characters that are compared in a case-insensitive fashion.