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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-02 17:50:25  来源:igfitidea点击:

Difference between res.setHeader and res.header in node.js

node.jsexpress

提问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()

文档: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.

我将此代码用于我的平均堆栈项目。