gpt4 book ai didi

javascript - 如何设置一系列setHeader的DRY

转载 作者:行者123 更新时间:2023-12-03 08:53:32 25 4
gpt4 key购买 nike

我刚刚学习使用 DRY原理,我不知道如何设置一系列 setHeaderDRY (如果可能的话?)。

感谢任何帮助。

function plugin(options) {
var defaults = {
cache: 0
, port: 8080
, host: 'localhost'
, verbose: false
, serverInfo: 'myserver'
, cacheControl: 'no-store'
, xPowerBy: 'Locomotion'
, xFrameOptions: 'DENY'
, xXSSProtection: '1; mode=block'
, xContentTypeOption: 'nosniff'
, contentSecurityPolicy: 'default-src "self"'
};

var opts = options || {};

setDefaults(opts, defaults);

return function(files, staticsmith, done) {

if (server) {
done();
return;
}

// Some stuff

server = require('http').createServer(function (request, response) {

response.setHeader('X-Powered-By', opts.xPowerBy);
response.setHeader('x-frame-options', opts.xFrameOptions);
response.setHeader('X-XSS-Protection', opts.xXSSProtection);
response.setHeader('X-Content-Type-Options', opts.xContentTypeOption);
response.setHeader('Cache-Control', opts.cacheControl);
response.setHeader('Content-Security-Policy', opts.contentSecurityPolicy);

// Does some more stuff
};
}

最佳答案

这并不是对 DRY 原则的严重/冒犯性违反,因为您每次都为不同的选项/值设置 header 。

检查documentation ,似乎没有接受对象数组或具有多个 header 属性的对象的重载。

但是,如果您想在视觉上改进代码(并完全消除重复),您可以采用“数据驱动”方法并使用数组

var headers = [{
name: 'X-Powered-By',
option: opts.xPowerBy
}, {
name: 'x-frame-options',
option: opts.xFrameOptions
}, {
name: 'X-XSS-Protection',
option: opts.xXSSProtection
}, {
name: 'X-Content-Type-Options',
option: opts.xContentTypeOption
}, {
name: 'Cache-Control',
option: opts.cacheControl
}, {
name: 'Content-Security-Policy',
option: opts.contentSecurityPolicy
}];

然后循环

for(var i = 0; i < headers.length; i++){
response.setHeader(headers[i].name, headers[i].option);
}

关于javascript - 如何设置一系列setHeader的DRY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32597204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com