res.setHeader和node.js中res.头之间的差异

yzxexxkh  于 2022-12-26  发布在  Node.js
关注(0)|答案(4)|浏览(140)

res.setHeader和res.header之间有什么区别?应使用哪一个来启用CORS?在某些页面中,res.header用于CORS,而在某些页面中,res.setHeader用于CORS。

voase2hg

voase2hg1#

res.setHeader()是Node.js的本机方法,res.header()是Express框架中res.set()方法的别名。
文件:x1米3英寸1x,x1米4英寸1x
这两个方法做的是完全相同的事情,设置HTTP响应的头。唯一的区别是res.setHeader()只允许你设置一个单一的头res.header()将允许你设置多个头。所以使用适合你需要的一个。

mzmfm0qo

mzmfm0qo2#

也许一个例子可以澄清更多:

// only a single field is set 
res.setHeader('content-type', 'application/json');

// multiple fields can be set at once
res.set({
     'content-type': 'application/json',
     'content-length': '100',
     'warning': "with content type charset encoding will be added by default"
});
dgtucam1

dgtucam13#

除了高投票的答案,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

w1jd8yoj

w1jd8yoj4#

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

我将这段代码用于我的mean stack项目。

相关问题