@spartacus/setup
Version:
Includes features that makes Spartacus and it's setup easier and streamlined.
20 lines • 2.98 kB
JavaScript
export function getRequestOrigin(req) {
// If express is resolving and trusting X-Forwarded-Host, we want to take it
// into an account to properly generate request origin.
const trustProxyFn = req.app.get('trust proxy fn');
let forwardedHost = req.get('X-Forwarded-Host');
if (forwardedHost && trustProxyFn(req.connection.remoteAddress, 0)) {
if (forwardedHost.indexOf(',') !== -1) {
// Note: X-Forwarded-Host is normally only ever a
// single value, but this is to be safe.
forwardedHost = forwardedHost
.substring(0, forwardedHost.indexOf(','))
.trimRight();
}
return req.protocol + '://' + forwardedHost;
}
else {
return req.protocol + '://' + req.get('host');
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1vcmlnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlLWxpYnMvc2V0dXAvc3NyL3V0aWwvcmVxdWVzdC1vcmlnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQVk7SUFDM0MsNEVBQTRFO0lBQzVFLHVEQUF1RDtJQUN2RCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELElBQUksYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNoRCxJQUFJLGFBQWEsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDbEUsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3JDLGlEQUFpRDtZQUNqRCw4Q0FBOEM7WUFDOUMsYUFBYSxHQUFHLGFBQWE7aUJBQzFCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDeEMsU0FBUyxFQUFFLENBQUM7U0FDaEI7UUFDRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxHQUFHLGFBQWEsQ0FBQztLQUM3QztTQUFNO1FBQ0wsT0FBTyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQy9DO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcXVlc3RPcmlnaW4ocmVxOiBSZXF1ZXN0KTogc3RyaW5nIHtcbiAgLy8gSWYgZXhwcmVzcyBpcyByZXNvbHZpbmcgYW5kIHRydXN0aW5nIFgtRm9yd2FyZGVkLUhvc3QsIHdlIHdhbnQgdG8gdGFrZSBpdFxuICAvLyBpbnRvIGFuIGFjY291bnQgdG8gcHJvcGVybHkgZ2VuZXJhdGUgcmVxdWVzdCBvcmlnaW4uXG4gIGNvbnN0IHRydXN0UHJveHlGbiA9IHJlcS5hcHAuZ2V0KCd0cnVzdCBwcm94eSBmbicpO1xuICBsZXQgZm9yd2FyZGVkSG9zdCA9IHJlcS5nZXQoJ1gtRm9yd2FyZGVkLUhvc3QnKTtcbiAgaWYgKGZvcndhcmRlZEhvc3QgJiYgdHJ1c3RQcm94eUZuKHJlcS5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3MsIDApKSB7XG4gICAgaWYgKGZvcndhcmRlZEhvc3QuaW5kZXhPZignLCcpICE9PSAtMSkge1xuICAgICAgLy8gTm90ZTogWC1Gb3J3YXJkZWQtSG9zdCBpcyBub3JtYWxseSBvbmx5IGV2ZXIgYVxuICAgICAgLy8gICAgICAgc2luZ2xlIHZhbHVlLCBidXQgdGhpcyBpcyB0byBiZSBzYWZlLlxuICAgICAgZm9yd2FyZGVkSG9zdCA9IGZvcndhcmRlZEhvc3RcbiAgICAgICAgLnN1YnN0cmluZygwLCBmb3J3YXJkZWRIb3N0LmluZGV4T2YoJywnKSlcbiAgICAgICAgLnRyaW1SaWdodCgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVxLnByb3RvY29sICsgJzovLycgKyBmb3J3YXJkZWRIb3N0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXEucHJvdG9jb2wgKyAnOi8vJyArIHJlcS5nZXQoJ2hvc3QnKTtcbiAgfVxufVxuIl19