villadora / express-http-proxy

Proxy middleware for express/connect
Other
1.22k stars 236 forks source link

Question: How to cancel the request and return 401? #544

Open cawoodmonads opened 1 month ago

cawoodmonads commented 1 month ago

We want to check specific headers (say X-API-Key) and cancel the proxy request if they are incorrect. We've tried putting the logic in a filter() function but return false does not cancel the request - it passes the request on to the next handler in express. Even if we .status(401).send().end() the request is still passed on to the next handler.

  filter: function(req, res) {
    if (req.header('x-api-key') !== 'secretkey') {
      res.status(401).send('Invalid X-API-Key!').end(); // This works for the client
      return false; // This causes an express error on the server
    }
    return true;
  },

How can we cancel/block the request from being proxied?