Files
NodeBB/src/middleware/headers.js

45 lines
1.3 KiB
JavaScript
Raw Normal View History

'use strict';
var os = require('os');
2016-10-17 18:58:25 +03:00
var meta = require('../meta');
module.exports = function (middleware) {
middleware.addHeaders = function (req, res, next) {
var headers = {
'X-Powered-By': encodeURI(meta.config['powered-by'] || 'NodeBB'),
'X-Frame-Options': meta.config['allow-from-uri'] ? 'ALLOW-FROM ' + encodeURI(meta.config['allow-from-uri']) : 'SAMEORIGIN',
'Access-Control-Allow-Methods': encodeURI(meta.config['access-control-allow-methods'] || ''),
2017-02-17 19:31:21 -07:00
'Access-Control-Allow-Headers': encodeURI(meta.config['access-control-allow-headers'] || ''),
};
2017-04-06 17:56:54 -04:00
if (meta.config['access-control-allow-origin']) {
var origins = meta.config['access-control-allow-origin'].split(',');
origins = origins.map(function (origin) {
return origin && origin.trim();
});
if (origins.includes(req.get('origin'))) {
headers['Access-Control-Allow-Origin'] = encodeURI(req.get('origin'));
}
}
if (meta.config['access-control-allow-credentials']) {
headers['Access-Control-Allow-Credentials'] = meta.config['access-control-allow-credentials'];
2017-04-06 17:56:54 -04:00
}
if (process.env.NODE_ENV === 'development') {
headers['X-Upstream-Hostname'] = os.hostname();
}
2016-10-17 18:58:25 +03:00
for (var key in headers) {
if (headers.hasOwnProperty(key) && headers[key]) {
2016-11-23 12:25:01 -05:00
res.setHeader(key, headers[key]);
}
}
next();
};
};