node.js中res.setHeader和res.header之间的差异
res.setHeader和res.header之间的区别是什么。启用CORS应使用哪一个?在某些页面中,res.header用于CORS,而res.setHeader用于CORS。node.js中res.setHeader和res.header之间的差异,node.js,express,Node.js,Express,res.setHeader和res.header之间的区别是什么。启用CORS应使用哪一个?在某些页面中,res.header用于CORS,而res.setHeader用于CORS。res.setHeader()是Node.js的本机方法,res.header()是Express framework中res.set()方法的别名 文件: 这两个方法做的事情完全相同,设置HTTP响应的头。唯一的区别是res.setHeader()只允许设置单个头,res.header()允许设置多个头。 因此,请
res.setHeader()
是Node.js的本机方法,res.header()
是Express framework中res.set()
方法的别名
文件:
这两个方法做的事情完全相同,设置HTTP响应的头。唯一的区别是res.setHeader()
只允许设置单个头,res.header()
允许设置多个头。
因此,请使用适合您需要的一款。也许一个例子可以更清楚地说明:
// 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"
});
我将此代码用于我的平均堆栈项目。除了高投票率答案之外,
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;
};
另请参见GitHub可能重复的我知道如何允许CORS。但在某些地方它写为res.header,而在某些地方写为res.setHeader.Note:在
setHeader
示例中应该是“逗号”而不是“冒号”。属性之间存在逗号。冒号(:)是javascript将值与其属性分离的一种方式。所以我知道这是对的。如果代码不起作用,请检查并告诉我。Thanks@Ghafoor但是节点的本机res.setHeader
函数()获取两个参数(name
,value
,它们用逗号分隔)。您可能会将它与一个对象
参数混淆(但即使这样,{}
也会丢失)。TL;DR:结肠应该是一个逗号,但实际上并不正确res.setHeader('X-Frame-Options','*')
将使用值*
设置头X-Frame-Options
,而res.header('X-Frame-Options','*')
将使用值*
设置头X-Frame-Options
。但是,由于标题在技术上是不区分大小写的,所以在大多数情况下都可以。这并不能回答问题。谢谢。标题很有用。当做
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;
};