Как заменить IP-адреса, представленные на странице, в виде текста на его IP-адрес (например, «Страна, Регион, Город») - PullRequest
0 голосов
/ 30 января 2011

Я пытаюсь написать пользовательский JS Opera для замены IP-адресов, представленных на странице, в виде текста на его IP-адрес.Пройдя некоторое время, я нашел сервис, который предоставляет именно ту информацию, которая мне нужна.

Этот сервис для HTTP-запроса возвращает заголовок страницы с мета-информацией, содержащей необходимую информацию.
Например, этот запрос: http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=142.34.25.111
(см. Источник страницы)
В браузере этот запрос работает нормально.
Я пытался получить этот текст (в формате XML) через AJAX, но обнаружил ошибку ReferenceError: Security violation в строке xmlhttp.send();.

Итак, мои вопросы:
- Существует ли какая-либо практика получения IP-адреса с IP-адреса через JS (без какой-либо платы || регистрация)
- Как я могу заменить некоторое содержимоеодна страница для изменения содержимого другой страницы через JS?

PS.Я очень новичок в программировании JS.

  <html>
  <head>
  <script type="text/javascript">
  function loadXMLDoc()
  {
  var xmlhttp;
  if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
    }
  else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
          //document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
          var x = xmlhttp.responseXML.documentElement.documentElement;
          var i, s, xx;
          s = '';
          for (i=0; i < x.length; i++)
          {
            xx = x[i].documentElement;
            if (xx.attributes[0] == 'country') s = s + xx.attributes[1].textContent;
            if (xx.attributes[0] == 'region') s = s + ', ' + xx.attributes[1].textContent;
            if (xx.attributes[0] == 'city') s = s + ', ' + xx.attributes[1].textContent;
          }
          document.getElementById("myDiv").innerHTML = s;
        }
    }
  xmlhttp.open("GET","http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=142.34.25.111",false);
  xmlhttp.send();
  }
  </script>
  </head>
  <body>

  <div id="myDiv"><h2>Let AJAX change this text</h2></div>
  <button type="button" onclick="loadXMLDoc()">Change Content</button>

  </body>
  </html>  

Включена тестовая страница.

Хорошо, большое спасибо всем!
Может быть, мой вопрос недостаточно ясен.
Давайте попробуем еще раз (я сказал этосебя):
Мне нужна функция JS, такая как IPAddress2IPLocation(InIPAddress), которая возвращает местоположение IP в формате Country, Region, City, используя переданный параметр.

Кто-нибудь знает ответ на мой вопрос?
В это время (3:50 утра здесь) я одобрил любые предложения:)
Но, в любом случае, это не очень похоже на мою жизнь- просто интересно про JS.

Ответы [ 3 ]

1 голос
/ 30 января 2011

Вероятно, это связано с доступом к другому домену из Ajax. В целях безопасности могут быть сделаны запросы только к одному и тому же доменному имени.

Код http://www.codeproject.com/KB/aspnet/aspxcode_net.aspx описывает основы построения ip для перевода местоположения.

1 голос
/ 30 января 2011

Безопасность Javascript!Не бойтесь, есть способы обойти ту же политику происхождения.

Обойти ту же политику происхождения в javascript без серверных сценариев

1 голос
/ 30 января 2011

ReferenceError: Security violation не просит вас заплатить комиссию. Вы делаете Межсайтовый скриптинг , что является нарушением безопасности в большинстве браузеров.

Вы можете избежать этой ошибки, используя прокси-сервер.

...