You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.4 KiB
JavaScript

'use strict';
var _ = require('underscore');
var meta = require('../meta');
module.exports = function (middleware) {
middleware.addHeaders = function (req, res, next) {
var defaults = {
'X-Powered-By': 'NodeBB',
'X-Frame-Options': 'SAMEORIGIN',
'Access-Control-Allow-Origin': 'null' // yes, string null.
};
var headers = {
8 years ago
'X-Powered-By': encodeURI(meta.config['powered-by']),
'X-Frame-Options': meta.config['allow-from-uri'] ? 'ALLOW-FROM ' + encodeURI(meta.config['allow-from-uri']) : undefined,
'Access-Control-Allow-Origin': encodeURI(meta.config['access-control-allow-origin']),
'Access-Control-Allow-Methods': encodeURI(meta.config['access-control-allow-methods']),
'Access-Control-Allow-Headers': encodeURI(meta.config['access-control-allow-headers'])
};
_.defaults(headers, defaults);
headers = _.pick(headers, Boolean); // Remove falsy headers
for (var key in headers) {
if (headers.hasOwnProperty(key)) {
8 years ago
res.setHeader(key, headers[key]);
}
}
next();
};
middleware.addExpiresHeaders = function (req, res, next) {
if (req.app.enabled('cache')) {
res.setHeader("Cache-Control", "public, max-age=5184000");
res.setHeader("Expires", new Date(Date.now() + 5184000000).toUTCString());
} else {
res.setHeader("Cache-Control", "public, max-age=0");
res.setHeader("Expires", new Date().toUTCString());
}
next();
};
};