使用 sails.js 修改响应标头以实现 HSTS

2024-01-02

我正在使用来实现一个nodejs应用程序sails.js http://sailsjs.org。我希望我的用户仅通过 https 进行通信。因此,为了做到这一点,我需要以我的方式配置我的服务器,以便每个响应都会添加一个标头“Strict-Transport-Security”、“max-age=31536000”,以告诉浏览器仅与 HSTS 通信。 现在我如何修改我要从 sails js 发送的每个响应标头。我搜索了文档但没有找到任何帮助。


策略仅应用于您在中明确分配给它们的控制器config/policies.js.

尝试直接添加快速中间件,而不是使用策略config/express.js,(如果该文件尚不存在,则创建该文件)。该中间件应用于ALL控制器。格式是这样的:

// 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();
        });
    }
}

如果您想要使用多个快速自定义中间件,我的建议是将每个中间件函数保留在其自己的文件中。我将提供一个示例,使用您的中间件以及接受一些选项的附加中间件。

// 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”命名空间上导出一个函数,我相信只有最后加载的文件的 middleWare 才能工作。不过我还没试过。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 sails.js 修改响应标头以实现 HSTS 的相关文章

随机推荐