在 Express 中获取请求来源

sql*_*oug 5 express

我如何真正获得起源?当我在下面使用以下内容时router.get('/', ...),它只返回未定义。

var origin = req.get('origin');
Run Code Online (Sandbox Code Playgroud)

(我尝试使用原始域作为查找键,然后构建正确的 URL 参数以发布到 API)

小智 5

在请求路径中添加此expressJs中间件。确保这是第一次遇到中间件请求。

/**
 * Creates origin property on request object
 */
app.use(function (req, _res, next) {
  var protocol = req.protocol;

  var hostHeaderIndex = req.rawHeaders.indexOf('Host') + 1;
  var host = hostHeaderIndex ? req.rawHeaders[hostHeaderIndex] : undefined;

  Object.defineProperty(req, 'origin', {
    get: function () {
      if (!host) {
        return req.headers.referer ? req.headers.referer.substring(0, req.headers.referer.length - 1) : undefined;
      }
      else {
        return protocol + '://' + host;
      }
    }
  });

  next();
});
Run Code Online (Sandbox Code Playgroud)

其中 app 是 Express 应用程序或 Express 路由器对象。


sql*_*oug 2

var origin = req.get('Origin')router.get当服务器(在本例中为 app.js)在其路由之前插入时工作res.header("Access-Control-Allow-Origin", <a single allowed domain here (or '*' for any domain)>);