node-tailor
Version:
Tailor assembles a web page from multiple fragments
31 lines (29 loc) • 977 B
JavaScript
;
const ACCEPT_HEADERS = [
'accept-language',
'referer',
'user-agent',
'x-request-uri',
'x-request-host'
];
/**
* Filter the request headers that are passed to fragment request.
* @callback filterHeaders
*
* @param {Object} attributes - Attributes object of the fragment node
* @param {string} attributes.public - Denotes the public fragment.
* @param {Object} request - HTTP Request object
* @param {Object} request.headers - request header object
* @returns {Object} New filtered header object
*/
module.exports = (attributes, request) => {
const { public: isPublic } = attributes;
const { headers = {} } = request;
// Headers are not forwarded to public fragment for security reasons
return isPublic
? {}
: ACCEPT_HEADERS.reduce((newHeaders, key) => {
headers[key] && (newHeaders[key] = headers[key]);
return newHeaders;
}, {});
};