Коа 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-адрес обратного прокси-сервера. В этом случае это более сложно: в конфигурации обратного прокси-сервера вам нужно добавить специальный заголовок, например. X-Orig-IP
с оригинальным IP-адресом клиента.
Затем, вы можете получить доступ к нему в коа с:
const clientIp = this.request.headers["X-Orig-IP"];
Коа 2:
Подход весьма похож, только синтаксис немного отличается:
router.get('/', async (ctx, next) => {
const clientIP = ctx.request.ip;
ctx.body = `Hello World ${clientIP}`;
})
Любая идея, как это будет работать в Koa2? – Qasim
@ Qasim Я приведу пример. –
@ Qasim См. Обновленный ответ! –