Skip to content

Stop setting HTTP_VERSION to SERVER_PROTOCOL #970

@mattrobenolt

Description

@mattrobenolt

I'm opening this to discuss the merits and reasonings for setting HTTP_VERSION inside of the different rack handlers.

See my "Notes" under #969 for a little bit of context.

tl;dr is in all of the handlers, rack does this little bit:

env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]

This causes an environment variable to get set to for HTTP_VERSION, when according to the CGI spec, HTTP_* is explicitly reserved for client headers. This makes it confusing if something downstream is attempting to collect all client headers, this becomes ambiguous. Did the client sent a Version header? Or is this the Version header that Rack is declaring?

This behavior is wrong, but I'm not sure of the ramification of simply... stopping doing this. I can't seem to find things that reference this, except the internals that were fixed up in #969, but no idea how common this is downstream to actually use this value.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions