express-http-problem-details
express-http-problem-details copied to clipboard
Map response headers
trafficstars
There are cases where I would like to set additional headers on a problem details response. For example:
- After authentication failure, we should set the
WWW-Authenticateheader (https://datatracker.ietf.org/doc/html/rfc6750#section-3) - For rate-limiting, it would be nice to set the
Retry-Afterheader (which is mentioned at https://www.rfc-editor.org/rfc/rfc7807#section-4) and alsoX-RateLimit-Remaining, etc.
For now this is my workaround, which relies on the errors thrown or passed to next having a valid headers property, and feels a bit hacky:
app.use((err, req, res, next) => {
if (err.headers && (typeof err.headers === 'object')) {
for (let [key, val] of Object.entries(err.headers)) {
res.header(key, val);
}
}
next(err);
});
app.use(HttpProblemResponse({strategy}));
I think it would be better if we could somehow explicitly include response headers when mapping specific error types, such that those headers are then set on the response sent by HttpProblemDetailsMiddleware().