Nowadays lots of services are built upon HTTP protocol. So it's quite common to invoke backend services based on HTTP.
There is a built-in httpclient in Egg framework so that we can use it to invoke HTTP services easily.
This plugin provides a way of capturing HTTP request for debugging purpose.
This plugin is deprecated, instead, you just need to add below code to config.local.js
// config.local.js
module.exports = () => {
const config = {};
// add http_proxy to httpclient
if (process.env.http_proxy) {
config.httpclient = {
request: {
enableProxy: true,
rejectUnauthorized: false,
// proxy: process.env.http_proxy,
},
};
}
return config;
}
then start your application by:
$ http_proxy=http://127.0.0.1:8888 npm run dev
npm i egg-development-proxyagent --save-dev
// config/plugin.local.js
exports.proxyagent = {
enable: true,
package: 'egg-development-proxyagent',
};
This plugin will take effect only in local
env. Because it overrides the agent
and httpsAgent
of httpclient, so it will work for every request. And also you can delegate HTTPS requests via HTTP.
http_proxy
or HTTP_PROXY
environment variable will be used if set in Bash. Or you can specify it when you start app:
$ http_proxy=http://127.0.0.1:8888 node index.js
By default the http_proxy
(or HTTP_PROXY
) mentioned above will be passed to httpsAgent
of urllib, and rejectUnauthorized = false
will be set.
However, when using self-signed certificate we need to configure the certificate, shown as follows:
ca
String | Buffer | Array - An array of strings or Buffers of trusted certificates. If this is omitted several well known "root" CAs will be used, like VeriSign. These are used to authorize connections. Notes: This is necessary only if the server uses the self-signed certificate
// config/config.default.js
exports.proxyagent = {
ca: 'xxxxxxxxxxxx',
};
Note: Capturing tool is not in this plugin, you can use one of them below:
- charles
- fiddler
- anyproxy is a capturing tool writtern in node. It provides a web console, it's a good replacement of charles.
$ npm install anyproxy -g
$ anyproxy --port 8888
$ open http://localhost:8002
Screenshot:
Please open an issue here.