Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,15 @@ var server = app.listen(3000);
}
```

* **option.onProxyReq**: function, subscribe to http-proxy's proxyReq event.
```javascript
function onProxyReq(proxyReq, req, res) {
// add custom header to request
proxyReq.setHeader('x-added', 'foobar');
// or log the req
}
```

* (DEPRECATED) **option.proxyHost**: Use `option.changeOrigin = true` instead.

The following options are provided by the underlying [http-proxy](https://www.npmjs.com/package/http-proxy).
Expand Down Expand Up @@ -248,6 +257,7 @@ $ npm run cover

## Changelog

* [v0.8.1](https://github.com/chimurai/http-proxy-middleware/releases/tag/v0.8.1) - fixed pathRewrite when `agent` is configured
* [v0.8.0](https://github.com/chimurai/http-proxy-middleware/releases/tag/v0.8.0) - support external websocket upgrade, fixed websocket shorthand
* [v0.7.0](https://github.com/chimurai/http-proxy-middleware/releases/tag/v0.7.0) - support shorthand syntax, fixed express/connect mounting
* [v0.6.0](https://github.com/chimurai/http-proxy-middleware/releases/tag/v0.6.0) - support proxyTable
Expand Down
5 changes: 5 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ var httpProxyMiddleware = function (context, opts) {
proxy.on('proxyRes', proxyOptions.onProxyRes);
}

// Custom listener for the `proxyReq` event on `proxy`.
if (_.isFunction(proxyOptions.onProxyReq)) {
proxy.on('proxyReq', proxyOptions.onProxyReq);
}

// Custom listener for the `error` event on `proxy`.
var onProxyError = getProxyErrorHandler();
// handle error and close connection properly
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "http-proxy-middleware",
"version": "0.8.0",
"version": "0.8.1",
"description": "The one-liner node.js proxy middleware for connect, express and browser-sync",
"main": "index.js",
"scripts": {
Expand Down
38 changes: 38 additions & 0 deletions test/http-proxy-middleware.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,44 @@ describe('http-proxy-middleware in actual server', function () {
});
});

describe('option.onProxyReq', function () {
var proxyServer, targetServer;
var receivedRequest;

beforeEach(function (done) {
var fnOnProxyReq = function (proxyReq, req, res) {
proxyReq.setHeader('x-added', 'foobar'); // add custom header to request
};

var mw_proxy = proxyMiddleware('/api', {
target: 'http://localhost:8000',
onProxyReq: fnOnProxyReq
});

var mw_target = function (req, res, next) {
receivedRequest = req;
res.write(req.url); // respond with req.url
res.end();
};

proxyServer = createServer(3000, mw_proxy);
targetServer = createServer(8000, mw_target);

http.get('http://localhost:3000/api/foo/bar', function () {
done();
});
});

afterEach(function () {
proxyServer.close();
targetServer.close();
});

it('should add `x-added` as custom header to request"', function () {
expect(receivedRequest.headers['x-added']).to.equal('foobar');
});
});

describe('option.pathRewrite', function () {
var proxyServer, targetServer;
var responseBody;
Expand Down