Я попытался бы объяснить на диаграммах
[REST SERVER] <--------> [JAVASCRIPT BASED WEBSITE] <--------> [USER] 192.168.0.2 192.168.0.3 192.168.0.123
Как я могу получить IP-адрес веб-сайта, который использует сервер REST вместо IP-адреса USER.
Я попытался использовать $ _SERVER ['REMOTE_ADDR'] и $ _SERVER ['HTTP_REFERRER'], но оба они возвращают IP-адрес пользователя.
Возможно ли это в Интернете? Я использую PHP для моего сервера REST.
Я предполагаю, что вы имеете в виду, что веб-сайт размещен на 192.168.0.3
. Это означает, что пользователь будет загружать данные Javascript и HTML с указанного сервера, а затем выполнять его локально на 192.168.0.123
. Затем Javascript будет делать удаленные вызовы службе REST с этого локального IP-адреса.
Вы хотите знать, как получить IP-адрес сервера, на котором размещены файлы Javascript / HTML, до того, как клиент скачал их, предположительно, надежным способом. И ответ заключается в том, что это невозможно. Поскольку ваша фактическая схема выглядит так:
[JAVASCRIPT BASED WEBSITE] <--------> [USER] 192.168.0.3 192.168.0.123 ^ | [REST SERVER] <--------------------------+ 192.168.0.2
Вы не можете сделать это надежно. Вам нужно будет передать javascript этому серверу. А поскольку javascript запускается на стороне клиента, это может быть подделано.
И даже тогда javascript не имеет собственных функций, чтобы получить вам IP-адрес веб-сайта. Он может дать вам доменное имя. А затем, например, в PHP, вы можете разрешить это доменное имя на IP-адрес. Или веб-сервер, основанный на javascript, напрямую передает свой IP-адрес. Например, с помощью PHP вы можете сделать в javascript: var myIP = '<?php echo $_SERVER['SERVER_ADDR']; ?>';
var myIP = '<?php echo $_SERVER['SERVER_ADDR']; ?>';
В качестве побочного элемента заголовок Origin
(может быть подделан) предназначен для этой цели, но безопасным обходным путем будет какое-то рукопожатие между сервером JS и сервером REST.
Веб-страница, основанная на Javascript, запрашивает код маркера через серверы, вы помещаете этот токен в javascript и отправляете его на сервер останова.
Остальной сервер проверяет код маркера, а затем вы точно знаете, где находится javascript.
Это единственный метод проверки происхождения, это невозможно с помощью простых IP-адресов.