javascript - Koa.js获取客户端IP

标签 javascript node.js koa

我有一个带有这样处理程序的 Koa 应用程序:

router.get('/admin.html', function *(next) {
    const clientIP = "?";
    this.body = `Hello World ${clientIp}`;
});

我需要获取客户端的 IP 地址以形成响应。我如何分配 clientIp 以便它引用请求源自的 IP 地址。

最佳答案

Koa 1:

假设您没有适当的反向代理,您可以像这样使用 this.request.ip:

router.get('/admin.html', function *(next) {
    const clientIP = this.request.ip;
    this.body = `Hello World ${clientIP}`;
});

此功能记录在 request 中文档。您始终可以将上述 request 对象作为 this.request 进行访问。

如果您有反向代理,您将始终获得反向代理的 IP 地址。在这种情况下,它更棘手:在反向代理配置中,您需要添加一个特殊的 header ,例如X-Orig-IP 为原始客户端 IP。

然后,您可以通过以下方式在 koa 中访问它:

const clientIp = this.request.headers["X-Orig-IP"];

Koa 2:

方法非常相似,只是语法略有不同:

router.get('/', async (ctx, next) => {
    const clientIP = ctx.request.ip;
    ctx.body = `Hello World ${clientIP}`;
})

关于javascript - Koa.js获取客户端IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688712/

相关文章:

javascript - Facebook 如何在进入新页面时设法杀死 javascript?

node.js - 蓝名单应用程序抛出 "Enroll failed to create remote cloudant database for Optional("test1")。超时

javascript - Facebook Graph API 返回页面事件的空数据响应

node.js - 如何在 Firebase 函数中使用 koa.js + next

node.js - 在 Windows 10 和 Windows Server 2012 及更高版本上托管 `node.js` 应用程序的现代方法是什么?

javascript - 表单提交两次(ajax 和 jquery)

javascript - Safari 上的 Facebook 应用程序 iframe 登录问题

javascript - header 已发送 - Koa 和 bcrypt

javascript - JS Google Maps API v3 坐标之间的动画标记

node.js - react native : Cannot read property 'RNFSFileTypeRegular' of undefined