Я должен смочь найти IP-адрес сервера, на котором в настоящее время выполняется страница. У меня есть некоторый код, который называет сторонний сайт и должен передать определенный ключ, который изменяется, в зависимости от которого сервера он идет. Существует ли переменная CGI или некоторый путь в ColdFusion для определения то, что IP-адрес имеет хост-сервер?
Я бы использовал hostip.info API
Ваш IP в XML: http://api.hostip.info/get_xml .php
Ваш IP в HTML: http://api.hostip.info/get_html.php
Как отметили другие комментаторы, если вам нужен внешний IP-адрес, как его видит сторонний сайт, вам, вероятно, следует использовать внешние подходы, которые они рекомендуют.
Однако, если третья сторона предоставляет вам доступ в той или иной форме, основанной на фактическом IP-адресе, который видит сервер, а не на том IP-адресе, который они видят, вы можете использовать
<cfset cName = CreateObject("java", "java.net.InetAddress").getLocalHost().getHostAddress()>
<cfdump var="#cName#">
Есть две причины, по которым программа не может запросить хост, на котором она запущена, и узнать его IP-адрес:
У нее может быть несколько IP-адресов, и если не просматривать всевозможные структуры данных ядра, вы вряд ли узнаете, какая из них будет использоваться для данного исходящего соединения.
Он может подключаться к внешнему миру через брандмауэр NAT или какой-либо прокси-сервер, чтобы внешний мир увидел IP-адрес, отличный от любого из настроенных на вашем компьютере.
На самом деле, их может быть больше, чем этих двух, но это те, которые приходили мне в голову.
По этой причине самый простой способ - подключиться к другому устройству где-нибудь за пределами вашей корпоративной сети и посмотреть, какой IP-адрес, по его мнению, у вас есть. Я использую двухстрочный сценарий CGI, работающий на моем устройстве Colo Box, чтобы определить, какой IP-адрес у моего домашнего сервера в настоящее время (чтобы я мог определить, когда кабельная компания меняет его).
Самым безопасным способом будет использование такой службы, как WhatIsMyIP . Если сервер находится за NAT, то ОС не знает внешний IP-адрес.
В SO есть много вопросов по этому поводу, см., Например, здесь .
Вы можете использовать CGI.LOCAL_ADDR для определения IP-адреса вашего сервера (CFML эквивалент PHP $_SERVER["SERVER_ADDR"]). Это работает на IIS и Apache с использованием ColdFusion или Railo, если вы не находитесь за прокси-сервером, не прописываете IP вашего сервера и имеете только один IP, назначенный вашему серверу (не уверен, какой IP будет показан, если их несколько).