Potrzebuję być w stanie znaleźć adres IP serwera, na którym aktualnie wykonuje się strona. Mam kod, który wywołuje witrynę innej firmy i musi przekazać określony klucz, który zmienia się w zależności od serwera, na którym się znajduje. Czy istnieje zmienna CGI lub w jakiś sposób w ColdFusion, aby określić, jaki jest adres IP serwera hosta?Jak uzyskać adres IP serwera aplikacji?
Odpowiedz
użyłbym hostip.info API
Your IP w formacie XML: http://api.hostip.info/get_xml.php
Your IP w HTML: http://api.hostip.info/get_html.php
Najbezpieczniejszym sposobem będzie skorzystanie z usługi takiej jak WhatIsMyIP. Jeśli serwer znajduje się za NATem, system operacyjny nie ma wiedzy o zewnętrznym adresie IP.
Istnieje wiele pytań dotyczących SO, zobacz na przykład here.
Istnieją dwa powody, dla których program nie może zapytać host jest uruchomiony na i zobaczyć, co jest jego IP:
To może mieć wiele adresów IP, i krótkie spojrzenie przez wszelkiego rodzaju danych jądra struktur, z których prawdopodobnie nie będziesz wiedział, który z nich będzie używany dla danego połączenia wychodzącego.
Może łączyć się ze światem zewnętrznym za pomocą zapory NAT lub jakiegoś proxy, tak że świat zewnętrzny będzie widział inne IP niż te skonfigurowane w twoim pudełku.
Właściwie może być ich więcej, ale są to te, które przyszło mi do głowy.
Z tego powodu najprostszym sposobem jest połączenie się z inną skrzynką gdzieś poza siecią firmową i sprawdzenie, jakie IP ma ona na myśli. Używam dwuliniowego skryptu CGI działającego na moim colo boxie, aby wykryć, jaki IP ma obecnie mój serwer macierzysty (dzięki czemu mogę wykryć, kiedy firma kablowa to zmieni).
Podobnie jak inne komentujących nie zarysowanych jeśli potrzebują zewnętrznego IP jako strony trzeciej strony widzi to prawdopodobnie powinni korzystać z zewnętrznych podejść, które zalecają.
Jednakże jeśli strona trzecia daje dostęp w innej formie, która opiera się na rzeczywistym IP, co serwer widzi siebie, a nie IP, jak widzą go można użyć
<cfset cName = CreateObject("java", "java.net.InetAddress").getLocalHost().getHostAddress()>
<cfdump var="#cName#">
Można użyć CGI .LOCAL_ADDR, aby określić adres IP twojego serwera (odpowiednik CFML dla PHP __SERVER ["SERVER_ADDR"]). Działa na IIS i Apache przy użyciu ColdFusion lub Railo, biorąc pod uwagę, że nie jesteś za serwerem proxy, nie natrafiasz na swój adres IP serwera i przypisujesz serwerowi tylko jeden adres IP (nie wiesz, który adres IP zostanie wyświetlony, jeśli jest więcej niż jeden).
<cfhttp url="http://www.whatismyip.com/" result="myresult" resolveurl="yes">
<cfoutput>#myresult.filecontent#</cfoutput>