1.0.1 • Published 5 years ago
@longjs/proxy v1.0.1
@longjs/proxy 1.0.0
Introduction
The module based on @longjs/core, used for HTTP proxy request.
Use
> yarn add @longjs/proxy
or
> npm install @longjs/proxy
Examples
import Server from '@longjs/core'
import Proxy from '@longjs/proxy'
new Server({
port: 3000,
plugins: [
new Proxy({
'^/api': {
target: 'https://www.qq.com/',
changeOrigin: true,
pathRewrite: {
'/api': '/'
}
},
'^/baidu': {
target: 'https://www.baidu.com/',
changeOrigin: true,
pathRewrite: {
'/baidu': '/'
}
}
})
]
})
Api
new Proxy(proxyTable: { [key: string]: Options })
Options
proxyTable[key]
supports the following options:
- target: url string to be parsed with the url module
- forward: url string to be parsed with the url module
- agent: object to be passed to http(s).request (see Node's https agent and http agent objects)
- ssl: object to be passed to https.createServer()
- ws: true/false, if you want to proxy websockets
- xfwd: true/false, adds x-forward headers
- secure: true/false, if you want to verify the SSL Certs
- toProxy: true/false, passes the absolute URL as the
path
(useful for proxying to proxies) - prependPath: true/false, Default: true - specify whether you want to prepend the target's path to the proxy path
- ignorePath: true/false, Default: false - specify whether you want to ignore the proxy path of the incoming request (note: you will have to append / manually if required).
- localAddress: Local interface string to bind for outgoing connections
- changeOrigin: true/false, Default: false - changes the origin of the host header to the target URL
- preserveHeaderKeyCase: true/false, Default: false - specify whether you want to keep letter case of response header key
- auth: Basic authentication i.e. 'user:password' to compute an Authorization header.
- hostRewrite: rewrites the location hostname on (201/301/302/307/308) redirects.
- autoRewrite: rewrites the location host/port on (201/301/302/307/308) redirects based on requested host/port. Default: false.
- protocolRewrite: rewrites the location protocol on (201/301/302/307/308) redirects to 'http' or 'https'. Default: null.
- cookieDomainRewrite: rewrites domain of
set-cookie
headers. Possible values:false
(default): disable cookie rewriting- String: new domain, for example
cookieDomainRewrite: "new.domain"
. To remove the domain, usecookieDomainRewrite: ""
. - Object: mapping of domains to new domains, use
"*"
to match all domains. For example keep one domain unchanged, rewrite one domain and remove other domains:cookieDomainRewrite: { "unchanged.domain": "unchanged.domain", "old.domain": "new.domain", "*": "" }
- cookiePathRewrite: rewrites path of
set-cookie
headers. Possible values:false
(default): disable cookie rewriting- String: new path, for example
cookiePathRewrite: "/newPath/"
. To remove the path, usecookiePathRewrite: ""
. To set path to root usecookiePathRewrite: "/"
. - Object: mapping of paths to new paths, use
"*"
to match all paths. For example, to keep one path unchanged, rewrite one path and remove other paths:cookiePathRewrite: { "/unchanged.path/": "/unchanged.path/", "/old.path/": "/new.path/", "*": "" }
- headers: object with extra headers to be added to target requests.
- proxyTimeout: timeout (in millis) for outgoing proxy requests
- timeout: timeout (in millis) for incoming requests
- followRedirects: true/false, Default: false - specify whether you want to follow redirects
- selfHandleResponse true/false, if set to true, none of the webOutgoing passes are called and it's your responsibility to appropriately return the response by listening and acting on the
proxyRes
event buffer: stream of data to send as the request body. Maybe you have some middleware that consumes the request stream before proxying it on e.g. If you read the body of a request into a field called 'req.rawbody' you could restream this field in the buffer option:
{ target: 'http://localhost:4003/', buffer: streamify(req.rawBody) }
NOTE:
options.ws
and options.ssl
are optional.
options.target
and options.forward
cannot both be missing
If you are using the proxyServer.listen
method, the following options are also applicable:
- ssl: object to be passed to https.createServer()
- ws: true/false, if you want to proxy websockets
Issues
Contribution
License MIT
1.0.1
5 years ago
1.0.0
5 years ago
1.0.0-beta.0.4
5 years ago
1.0.0-beta.0.3
5 years ago
1.0.0-beta.0.2
5 years ago
1.0.0-beta.0.1
5 years ago