express - 在 Express 中获取请求来源

标签 express

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

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/

相关文章:

node.js - 所有路由的 HTTPS 重定向 node.js/express - 安全问题

javascript - Node : Error: Cannot find module 'html'

javascript - 如何发送多个 XMLHttpRequest

node.js - Express:不发送对请求的响应

node.js - 未调用 Express 4 中间件错误处理程序

javascript - 如何在 Node 服务器上强制用户从服务器端注销并对Web应用程序使用react?

javascript - 从nodejs发送数据到客户端不起作用

javascript - 服务器渲染错误

node.js - MongoDB - MongoError : Resulting document after update is larger than 16777216

node.js - 错误 : require. 路径已删除。使用 node_modules 文件夹或 NODE_PATH 环境变量