12345678910111213141516171819202122232425262728 |
- "use strict"
- Object.defineProperty(exports, "__esModule", { value: true })
- const ALLOWED_TOKENS = new Set(["no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url", ""])
- function getHeaderValueFromOptions({ policy = ["no-referrer"] }) {
- const tokens = typeof policy === "string" ? [policy] : policy
- if (tokens.length === 0) {
- throw new Error("Referrer-Policy received no policy tokens")
- }
- const tokensSeen = new Set()
- tokens.forEach(token => {
- if (!ALLOWED_TOKENS.has(token)) {
- throw new Error(`Referrer-Policy received an unexpected policy token ${JSON.stringify(token)}`)
- } else if (tokensSeen.has(token)) {
- throw new Error(`Referrer-Policy received a duplicate policy token ${JSON.stringify(token)}`)
- }
- tokensSeen.add(token)
- })
- return tokens.join(",")
- }
- function referrerPolicy(options = {}) {
- const headerValue = getHeaderValueFromOptions(options)
- return function referrerPolicyMiddleware(_req, res, next) {
- res.setHeader("Referrer-Policy", headerValue)
- next()
- }
- }
- module.exports = referrerPolicy
- exports.default = referrerPolicy
|