1 | ;
|
2 | const ACCEPT_HEADERS = ['accept-language', 'referer', 'user-agent'];
|
3 | /**
|
4 | * Filter the request headers that are passed to fragment request.
|
5 | * @callback filterHeaders
|
6 | *
|
7 | * @param {Object} attributes - Attributes object of the fragment node
|
8 | * @param {string} attributes.public - Denotes the public fragment.
|
9 | * @param {Object} request - HTTP Request object
|
10 | * @param {Object} request.headers - request header object
|
11 | * @returns {Object} New filtered header object
|
12 | */
|
13 | module.exports = (attributes, request) => {
|
14 | const { public: publicFragment } = attributes;
|
15 | const { headers = {} } = request;
|
16 | // Headers are not forwarded to public fragment for security reasons
|
17 | return publicFragment
|
18 | ? {}
|
19 | : ACCEPT_HEADERS.reduce((newHeaders, key) => {
|
20 | headers[key] && (newHeaders[key] = headers[key]);
|
21 | return newHeaders;
|
22 | }, {});
|
23 | };
|