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 = var params = // filter IP rangesvar filteredParams = // don't list private IPsvar filteredParams =
.port
The final proxied port before hitting this server
var params = paramsport // '8000'
.for
Oject with IPs as key with matching port used as value (if applicable)
var params = paramsfor // { '0.0.0.1': '8000', '0.0.0.2': '8001' }
.proto
The final proxied protocol before hitting this server
var params = paramsproto // 'https'
.host
The proxied host
var params = aramshost // 'foo.com'
.ports
Array of ports the client is connected through
var params = paramsports // ['8000', '8001']
.ips
Array of IP addresses the client is connected through
var params = paramsips // ['0.0.0.1', '0.0.0.2']
Middleware
Use as Express Middleware to populate req.forwarded
object.
forwarded([options])
var express = var forwarded = var app = // use with default optionsapp // or with optionsapp
Support
Donations are welcome to help support the continuous development of this project.