Express 统一配置响应头 header 方法

express 创建后台服务时,后台服务是需要配置请求体和响应头的。

如果不想安装中间件,给 header 设计不同的响应头,也可以做到同中间件同样的效果,但是设置setHeader()需要放在路由之前

请求体

当后台收到一个 POST 或 GET  时,Node.js 的 request 可以将请求体也就是请求的数据传给服务端。

响应头

当服务端收到请求体的数据后,会通过 response 返回一个实例对象,这个实例对象就是请求到的数据,包含请求状态信息,数据实例以及错误信息。

Response 是一个响应对象,默认使用它的简写 res 代替。

Express 提供了20种 res 方法,默认情况下,设置响应头使用 res.setHeader() 方法,

res.set(field, [value])

例如:

app.all('*', function(req, res, next) {
    res.setHeader('Access-Control-Allow-Origin','*');
	res.setHeader('Access-Control-Allow-Methods', 'GET, POST');  
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization');  
    // res.setHeader("Content-Type", "application/json;charset=utf-8"); 
    next();
})

或传递一个字段或多个字段:

res.set({
  'Content-Type': 'text/plain',
  'Content-Length': '123',
  'ETag': '12345'
})

res.setHeader() 的别名为 res.header(),这两个方法是等效的。

不同的响应头,都有不同的作用:

  • Access-Control-Allow-Origin  允许跨域访问
  • Access-Control-Allow-Headers  向浏览器发送预检请求,询问是否支持跨域的自定义 header 字段
  • Access-Control-Allow-Methods  询问是否支持跨域的请求方法
  • Access-Control-Allow-Credentials  允许客户端携带验证信息去请求,例如 cookie 之类的

以下是全局设置响应头的代码:

const app = express();

app.all('*', (req, res, next) => {
  const { origin, Origin, referer, Referer } = req.headers;
  const allowOrigin = origin || Origin || referer || Referer || '*';
    res.header("Access-Control-Allow-Origin", allowOrigin);
    res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("Access-Control-Allow-Credentials", true); //可以带cookies
    res.header("X-Powered-By", 'Express');
    if (req.method == 'OPTIONS') {
      res.sendStatus(200);
    } else {
    next();
    }
});

参考这个网站:https://www.codota.com/code/javascript/functions/express/Response/header

有很多的例子。

原文地址:https://www.cnblogs.com/baiyygynui/p/13743135.html