2015-01-25 2 views
1

Я изучаю Node.js. При создании веб-сайта я буду запускать веб-сайт локально (по адресу localhost). Когда он будет развернут, он будет запущен на других серверах. Мой вопрос: как определить, является ли запрос локальным хостом или нет в узле? В ASP.NET я мог бы использовать Request.IsLocal. Я пытаюсь понять, как это сделать в узле.Определить, является ли запрос локальным в приложении Node.js

Спасибо!

ответ

2

server.address() для получения адреса сервера.

И request имеет connection и socket объектов, так как оба мог держать удаленный адрес (в remoteAddress собственности) в зависимости от типа текущего соединения.

Но если сервер находится за обратным прокси-сервером, вам придется вытащить его из соответствующего заголовка, скорее всего, x-forwarded-for. Однако я не уверен, что это происходит, если прокси соединены.

Итак, в заключение, вы могли бы сделать что-то вдоль линий:

function cliAddress(req) { 
    return req.connection.remoteAddress || req.socket.remoteAddress || req.headers['x-forwarded-for']; 
} 

server.isLocal = function(request) { 
    return server.address() === cliAddress(req); 
} 

А если вы используете express.js ...

+0

Я использую экспресс. Однако я не понимаю ссылку, которую вы включили. Я не вижу объектов 'connection' или' socket' в 'request' –

Смежные вопросы