Forwarded HTTP
Resolves RFC 7239 (Forwarded HTTP Extension), with fallback to all legacy & special Forward headers: X-Forwarded-*
, X-Real-*
, Fastly-Client-IP
, X-Cluster-Client-IP
, and others.
Focuses on resolving to the RFC standard and providing a consistent access to HTTP Forwarded Parameters: by
, for
, host
, proto
.
Filter valid IPv4 or IPv6 IPs against glob pattern, array, string, regexp or matcher function.
Use as Express Middleware to populate req.forwarded
object.
Install
npm install --save forwarded-http
API
forwarded(http.IncomingMessage[, options])
var forwarded = require('forwarded-http')
var params = forwarded(req)
var filteredParams = forwarded(req, {
filter: ['1.0.?.*', '2001:db8:*']
})
var filteredParams = forwarded(req, {
allowPrivate: false
})
.port
The final proxied port before hitting this server
var params = forwarded(req)
params.port
.for
Oject with IPs as key with matching port used as value (if applicable)
var params = forwarded(req)
params.for
.proto
The final proxied protocol before hitting this server
var params = forwarded(req)
params.proto
.host
The proxied host
var params = forwarded(req)
arams.host
.ports
Array of ports the client is connected through
var params = forwarded(req)
params.ports
.ips
Array of IP addresses the client is connected through
var params = forwarded(req)
params.ips
Middleware
Use as Express Middleware to populate req.forwarded
object.
forwarded([options])
var express = require('express')
var forwarded = require('forwarded-http/lib/middleware')
var app = express()
app.use(forwarded())
app.use(forwarded(req, {
filter: ['1.0.?.*', '2001:db8:*'],
allowPrivate: false
})
Support
Donations are welcome to help support the continuous development of this project.
License
MIT © Ahmad Nassri