My projects haven’t had the need to use filters much. Using headers is a clever way to pass values to a response filter. And as you say, they can be removed in the filter so the client never sees it. But maybe there should be another custom object for passing values from controllers to filters.
I would very much like some way to pass along server-side data.
The http headers can only be strings, so if one want to pass a data structure it must be converted to a json string in the page controller and parsed back to a js object in the filter. Which is kind of a hazzle.