nei
Version:
builder for nei platform
41 lines (35 loc) • 1.11 kB
JavaScript
;
let fs = require('fs');
let httpProxy = require('http-proxy');
let nei = require('./nei');
module.exports = function (req, res, options, headers) {
options = options || {};
if (typeof options === 'string') options = {target: options, changeOrigin: true};
let server = httpProxy.createServer(function (req, res) {
});
let errorFunc = function () {
return function (err, req, res) {
// 处理代理错误信息
if (err && err.code === 'ECONNRESET') return res.send('end');
else {
res.writeHead(500, {
'Content-Type': 'text/plain;charset=utf-8',
});
res.end('代理请求错误,url为' + req.url);
}
}
}
server.on('error', errorFunc());
server.on('proxyReq', function (proxyReq) {
// 追加头信息
proxyReq.setHeader('X-Special-Proxy-Header', 'JTR');
});
headers = nei.getting().API_RES_HEADERS;
Object.keys(headers).forEach(function (h) {
res.header(h, headers[h]);
});
if (req.method === 'OPTIONS') {
return res.sendStatus(200);
}
return server.web(req, res, options);
};