diff --git a/src/middleware/index.js b/src/middleware/index.js index d9d0aee089..1cbac02323 100644 --- a/src/middleware/index.js +++ b/src/middleware/index.js @@ -71,18 +71,7 @@ module.exports = function(app) { saveUninitialized: true })); - app.use(function (req, res, next) { - res.setHeader('X-Powered-By', 'NodeBB'); - - if (meta.config['allow-from-uri']) { - res.setHeader('X-Frame-Options', 'ALLOW-FROM ' + meta.config['allow-from-uri']); - } else { - res.setHeader('X-Frame-Options', 'SAMEORIGIN'); - } - - next(); - }); - + app.use(middleware.addHeaders); app.use(middleware.processRender); auth.initialize(app, middleware); diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js index 3706582e54..10090e02ce 100644 --- a/src/middleware/middleware.js +++ b/src/middleware/middleware.js @@ -7,6 +7,7 @@ var app, async = require('async'), path = require('path'), csrf = require('csurf'), + _ = require('underscore'), validator = require('validator'), nconf = require('nconf'), @@ -64,6 +65,30 @@ middleware.pageView = function(req, res, next) { } }; +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 = { + 'X-Powered-By': meta.config['powered-by'], + 'X-Frame-Options': meta.config['allow-from-uri'] ? 'ALLOW-FROM ' + meta.config['allow-from-uri'] : undefined, + 'Access-Control-Allow-Origin': meta.config['access-control-allow-origin'], + 'Access-Control-Allow-Methods': meta.config['access-control-allow-methods'], + 'Access-Control-Allow-Headers': meta.config['access-control-allow-headers'] + }; + + _.defaults(headers, defaults); + headers = _.pick(headers, Boolean); // Remove falsy headers + + for(var key in headers) { + res.setHeader(key, headers[key]); + } + + next(); +}; + middleware.pluginHooks = function(req, res, next) { async.each(plugins.loadedHooks['filter:router.page'] || [], function(hookObj, next) { hookObj.method(req, res, next); diff --git a/src/views/admin/settings/advanced.tpl b/src/views/admin/settings/advanced.tpl index b53cabacfb..a1a01e93cd 100644 --- a/src/views/admin/settings/advanced.tpl +++ b/src/views/admin/settings/advanced.tpl @@ -23,13 +23,40 @@
-
Domain Settings
+
Headers
- +
+
+ +
+
+
+ +
+

+ To deny access to all sites, leave empty or set to null +

+
+
+ +
+
+
+ +
+
+
+
+
+ +
+
Cookies
+
+