Why the header list is written per route
The list is the contract of the route. A contract only in the code is a contract that drifts with each edit.
The one header that must never be cached
The one that names the request. A cached copy of it is a response about a request that is not the current one.