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

后端 未结 4 1626
太阳男子
太阳男子 2020-12-25 12:54

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 use

相关标签:
4条回答
  • 2020-12-25 12:58

    Addition to high-voting answers, set is alias header which calls setHeader to set a header. here is the source code:

    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

    0 讨论(0)
  • 2020-12-25 13:07

    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"
      });
    
    0 讨论(0)
  • 2020-12-25 13:15

    res.setHeader() is a native method of Node.js and res.header() is an alias of res.set() method from Express framework.

    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 header and res.header() will allow you to set multiple headers. So use the one fit with your needs.

    0 讨论(0)
  • 2020-12-25 13:19
    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.

    0 讨论(0)
提交回复
热议问题