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

var origin = req.get('origin');

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

最佳答案

在请求的路径中添加这个 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();
});

其中 app 是 express app 或 express router 对象。

关于express - 在 Express 中获取请求来源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36554375/

10-14 11:27