node.js 中 res.setHeader 和 res.header 的区别
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/40840852/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Difference between res.setHeader and res.header in node.js
提问by Subham
What is the difference between res.setHeader and res.header. Which one should be used for enabling CORS? In some pages res.header is used and some pages res.setHeader is used for CORS.
res.setHeader 和 res.header 有什么区别。应该使用哪一个来启用 CORS?在某些页面中使用 res.header,而在某些页面中使用 res.setHeader 用于 CORS。
回答by Zagonine
res.setHeader()is a native method of Node.js and res.header()is an alias of res.set()method from Express framework.
res.setHeader()是 Node.js 的原生方法,res.header()是res.set()Express 框架中方法的别名。
Documentation:
res.setHeader(),res.set()
This two methods do exactly the same thing, set the headers HTTP response. The only difference is res.setHeader()allows you only to set a singular headerand res.header()will allow you to set multiple headers.
So use the one fit with your needs.
这两种方法做的完全一样,设置 HTTP 响应的标头。唯一的区别是只res.setHeader()允许您设置单个标题,res.header()并允许您设置多个标题。因此,请使用适合您需求的那一款。
回答by Ghafoor
Perhaps an example can clarify more:
也许一个例子可以澄清更多:
// single field is set
res.setHeader('content-type', 'application/json');
// multiple files can be set
res.set({
'content-type': 'application/json',
'content-length': '100',
'warning': "with content type charset encoding will be added by default"
});
回答by Pylon
Addition to high-voting answers, setis alias headerwhich calls setHeaderto set a header. here is the source code:
除了高投票的答案,set是别名,header它调用setHeader设置一个头。这是源代码:
res.set =
res.header = function header(field, val) {
if (arguments.length === 2) {
var value = Array.isArray(val)
? val.map(String)
: String(val);
// add charset to content-type
if (field.toLowerCase() === 'content-type') {
if (Array.isArray(value)) {
throw new TypeError('Content-Type cannot be set to an Array');
}
if (!charsetRegExp.test(value)) {
var charset = mime.charsets.lookup(value.split(';')[0]);
if (charset) value += '; charset=' + charset.toLowerCase();
}
}
this.setHeader(field, value);
} else {
for (var key in field) {
this.set(key, field[key]);
}
}
return this;
};
Also see GitHub here
另请参阅此处的GitHub
回答by Mostafa Mohammadi Panah
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
res.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PATCH, DELETE, OPTIONS"
);
next();
});
I use this code for my mean stack projects.
我将此代码用于我的平均堆栈项目。

