HTTP headers are case insensitive

This StackOverflow answer cites the RFC which defines headers.

Each header field consists of a name followed by a colon (":") and the field value. Field names are case-insensitive.

This means that if I send an HTTP request with the header "accept: text/html" (note the lowercase A), it will be translated to "Accept: text/html". In practical terms, this means in my Go code I must do Headers["Accept"], where the Headers map is an attribute on a http.Request.

Strangely, AWS API Gateway seems to do it the other way around, where “normal” headers such as Accept are lowercased into accept. I discovered this while trying to use the header in a Lambda function.