Package Exports
- express-http-proxy
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (express-http-proxy) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
express-http-proxy

Express proxy middleware to forward request to another host and pass response back
Install
$ npm install express-http-proxy --saveUsage
proxy(host, options);To proxy URLS starting with '/proxy' to the host 'www.google.com':
var proxy = require('express-http-proxy');
var app = require('express')();
app.use('/proxy', proxy('www.google.com'));Options
forwardPath
The forwardPath option allows you to modify the path prior to proxying the request.
var proxy = require('express-http-proxy');
var app = require('express')();
app.use('/proxy', proxy('www.google.com', {
forwardPath: function(req, res) {
return require('url').parse(req.url).path;
}
}));filter
The filter option can be used to limit what requests are proxied. For example, if you only want to proxy get request
app.use('/proxy', proxy('www.google.com', {
filter: function(req, res) {
return req.method == 'GET';
},
forwardPath: function(req, res) {
return require('url').parse(req.url).path;
}
}));intercept
You can intercept the response before sending it back to the client.
app.use('/proxy', proxy('www.google.com', {
intercept: function(rsp, data, req, res, callback) {
// rsp - original response from the target
data = JSON.parse(data.toString('utf8'));
callback(null, JSON.stringify(data));
}
}));decorateRequest
You can change the request options before it is sent to the target.
app.use('/proxy', proxy('www.google.com', {
decorateRequest: function(reqOpt, req) {
reqOpt.headers['Content-Type'] = '';
reqOpt.method = 'GET';
reqOpt.bodyContent = wrap(req.bodyContent);
return reqOpt;
}
}));
preserveHostHdr
You can copy the host HTTP header to the proxied express server using the preserveHostHdr option.
app.use('/proxy', proxy('www.google.com', {
preserveHostHdr: true
}));reqBodyEncoding
Encoding used to decode request body. Default to utf-8.
Use null to avoid decoding and pass the body as is.
Accept any values supported by raw-body.
app.use('/post', proxy('httpbin.org', {
reqBodyEncoding: null
}));Questions
Q: Can it support https proxy?
A: Yes, you can use the 'https-proxy-agent' package. Something like this:
var corporateProxyServer = process.env.HTTP_PROXY || process.env.http_proxy || process.env.HTTPS_PROXY || process.env.https_proxy;
if (corporateProxyServer) {
corporateProxyAgent = new HttpsProxyAgent(corporateProxyServer);
}Then inside the decorateRequest method, add the agent to the request:
req.agent = corporateProxyAgent;Release Notes
| Release | Notes |
|---|---|
| 0.7.2 | Collecting many minor documentation and test improvements. |
| 0.4.0 | Signature of intercept callback changed from function(data, req, res, callback) to function(rsp, data, req, res, callback) where rsp is the original response from the target |
Licence
MIT