基于HTTP请求头重建HTTP请求中使用的原始URL
基于HTTP请求头重建HTTP请求中使用的原始URL
Node.js HTTP工具
共56Star
详细介绍
original-url
Reconstruct the original URL used in an HTTP request based on the HTTP request headers.
The module takes into account potential URL rewrites made by proxies, load balancers, etc along the way (as long as these append special HTTP headers to the request).
Supported HTTP headers:
Host
Forwarded
X-Forwarded-Proto
X-Forwarded-Protocol
X-Url-Scheme
Front-End-Https
X-Forwarded-Ssl
X-Forwarded-Host
X-Forwarded-Port
If the protocol (http vs https) cannot be determined based on the above headers, the encrypted
flag on the TLS connection is used.
Installation
npm install original-url --save
Usage
Server example:
const http = require('http')
const originalUrl = require('original-url')
const server = http.createServer(function (req, res) {
const url = originalUrl(req)
if (url.full) {
res.end(`Original URL: ${url.full}\n`)
} else {
res.end('Original URL could not be determined\n')
}
})
server.listen(1337)
Request examples:
$ curl localhost:1337
Original URL: http://localhost:1337/
$ curl -H 'Host: example.com' localhost:1337
Original URL: http://example.com/
$ curl -H 'Host: example.com:1234' localhost:1337
Original URL: http://example.com:1234/
$ curl -H 'Forwarded: proto=https; host=example.com; for="10.0.0.1:1234"' localhost:1337/sub/path?key=value
Original URL: https://example.com:1234/sub/path?key=value
$ curl -H 'X-Forwarded-Host: example.com' -H 'X-Forwarded-Host: proxy.local' localhost:1337
Original URL: http://example.com/
API
result = originalUrl(req)
This module exposes a single function which takes an HTTP request object in the form of http.IncomingMessage
.
When called, the function returns a result
object with a full
property containing the fully resolved URL. The result
object will also contain any other property normally returned by the Node.js core url.parse
function.
If the hostname for some reason cannot be determined, result.full
will not be present.
License
-
3092 Star
-
29 Star
-
0 Star
-
0 Star
-
0 Star
-
0 Star
-
140 Star