用sails.js修改响应头来实现HSTS

我正在使用sails.js实现一个nodejs应用程序。 我希望我的用户只通过https进行通信。 所以为此,我需要按我的方式configuration我的服务器,以便每次响应都会添加一个标头“Strict-Transport-Security”,“max-age = 31536000”来告诉浏览器只与HSTS进行通信。 现在我怎么可以修改每个响应头,我将从风帆js.我搜查文件,但没有find任何帮助。

策略仅适用于您在config/policies.js明确分配的控制器。

不要使用策略,直接在config/express.js添加一个express中间件(如果文件不存在,就创build它)。 这个中间件适用于所有的控制器。 格式是这样的:

 // config/express.js "use strict"; exports.express = { customMiddleware: function (app) { app.use(function hsts(req, res, next) { res.setHeader("Strict-Transport-Security", "max-age=31536000"); next(); }); } } 

如果你有多个你想使用的快速定制中间件,我的build议是将每个中间件function保存在自己的文件中。 我将举一个例子,使用你的中间件和一个附加的中间件来接受一些选项。

 // config/express.js "use strict"; var hsts = require('../lib/middleware/hsts'); var staticguard = require('../lib/middleware/staticguard'); exports.express = { customMiddleware: function (app) { // ordering of middleware matters! app.use(hsts); app.use(staticguard(/^\/protected\/.*$/)); } } // lib/middleware/hsts.js "use strict"; module.exports = function hsts(req, res, next) { res.setHeader("Strict-Transport-Security", "max-age=31536000"); next(); } // lib/middleware/staticguard.js "use strict"; module.exports = function (regex) { return function (req, res, next) { if (!regex.test(req.url)) { return next(); } res.end('you are not allowed!'); } }; 

如果您尝试在“express.customMiddleware”命名空间中有多个文件导出函数,我相信只有加载的最后一个文件的中间件才能工作。 我还没有尝试过。

您应该可以使用Sails策略 。 有了这个,你应该可以创build一个策略来更改发回的头文件。

 // policies/hsts.js module.exports = function hsts(req, res, next) { res.setHeader("Strict-Transport-Security", "max-age=31536000"); };