我已经在nodejs中设置了内容安全策略(CSP),并且它正在应用于node。但是,对于根 html 页面,未应用 CSP。如何借助nodejs应用在html上。
app.use(function(req, res, next) {
res.setHeader("Content-Security-Policy", "default-src 'self'; font-src 'self'; img-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; frame-src 'self'; connect-src 'self' ");
return next();
});
我尝试使用restify代替express服务器,并使用与express几乎相同的代码,您可以为静态文件设置CSP和X-Frame-Options标头。 我不知道 Express 是否存在错误,或者是否有其他方法,但这是我正在使用的解决方法。
const restify = require("restify");
const { join } = require("path");
const server = restify.createServer();
// Middleware to set X-Frame-Options and Content Security Policy (CSP) headers
server.use((req, res, next) => {
res.setHeader("X-Frame-Options", "DENY");
const allowedDomain = "https://my-website.com";
res.setHeader("Content-Security-Policy", `frame-ancestors ${allowedDomain}`);
return next();
});
// Serve static files from the 'public' directory
server.get(
"/*",
restify.plugins.serveStatic({
directory: join(__dirname, "public"),
default: "index.html",
})
);
server.listen(8080, () => {
console.log("Server is running on port 8080");
});