hyperium / http

Rust HTTP types
Apache License 2.0
1.12k stars 283 forks source link

The request header does not support uppercase letters #610

Open arsiac opened 1 year ago

arsiac commented 1 year ago
if name_bytes.len() == 0 || name_bytes.len() > super::MAX_HEADER_NAME_LEN || {
    let mut i = 0;
    loop {
        if i >= name_bytes.len() {
            break false;
        } else if HEADER_CHARS_H2[name_bytes[i] as usize] == 0 {
            break true;
        }
        i += 1;
    }
} { 
    ([] as [u8; 0])[0]; // Invalid header name
}
robjtede commented 1 year ago

Lowercase header names are used as a normalized representation, since header names are case-insensitive in HTTP/1.x and required to be lowercase in HTTP/2.

Also see https://github.com/hyperium/http/issues/228#issuecomment-404996750