ogen-go / ogen

OpenAPI v3 code generator for go
https://ogen.dev
Apache License 2.0
1.34k stars 76 forks source link

Bug: case sensitive handling of HTTP Header #1301

Open AndreasBergmeier6176 opened 1 month ago

AndreasBergmeier6176 commented 1 month ago

What version of ogen are you using?

$ go list -m github.com/ogen-go/ogen

github.com/ogen-go/ogen v1.3.0

Can this issue be reproduced with the latest version?

Yes

What did you do?

Generate bindings. As a result the following was generated:

    if _, ok := r.Header["Content-Type"]; !ok && r.ContentLength == 0 {
        return req, close, nil
    }
    ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type"))
    if err != nil {
        return req, close, errors.Wrap(err, "parse media type")
    }

What did you expect to see?

Would expect r.Headers to only be accessed via Get due to case insensitivity.

What did you see instead?

Direct access of r.Header["Content-Type"] which does not handle insensitivity.

tdakkota commented 1 month ago

Incoming headers are canonicalized by Go http server, not sure if it is really a problem.

AndreasBergmeier6176 commented 1 month ago

Are you sure this cannot be a problem when writing tests against the API?