Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [AJAX] запросы на другой сервер 
:(
    Опции темы
kapbepucm
Дата 19.1.2011, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Имею самописный сервер, отвечающий на HTTP запросы и тестовую HTML-страничку использующую некоторые возможности AJAX. Столкнулся я со следующей проблемой: обьект XMLHttpRequest "не хочет" получать ответы с другого сервера, если сервер находится по другому адресу (не там откуда страничка в браузер загрузилась). Другими словами, если в адресную строку браузера вбиваю адрес http://192.168.2.7:2000/, то всё работает, но если file://{какои-то фаил}.html, то страничка загружается, но код JScript выполняется некорректно. Со стороны сервера видно всё ок. Он в обоих случаях отвечает на все запросы и по окончанию закрывает соединение. Привожу код странички:
Код
<html>
<head>
</head>
<body>
<script type="text/javascript" language="javascript">
const ServerUrl = "http://192.168.2.7:2000/";
function makeRequest(url)
{
  var httpRequest;

  if (window.XMLHttpRequest) 
  { // Mozilla, Safari, ...
    httpRequest = new XMLHttpRequest();
    if (httpRequest.overrideMimeType)
    {
      httpRequest.overrideMimeType('text/xml');
    }
  } 
  else if (window.ActiveXObject)
  { // IE
    try
    {
      httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e)
    {
      try
      {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      } 
      catch (e) {}
    }
  }

  if (!httpRequest)
  {
    alert('Cannot create an XMLHTTP instance');
    return false;
  }
  httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
  httpRequest.open('GET', ServerUrl + url, true);
  httpRequest.send('');
}

function alertContents(httpRequest)
{
  try
  {
    if (httpRequest.readyState == 4)
    {
      if (httpRequest.status == 200)
      {
//тут обработка ответов
        alert(httpRequest.responseText);
      }
      else
      {
        alert('alertContents(httpRequest): проблема с посылкой запроса.\nhttpRequest.status:='+httpRequest.status);
      }
    }
  }
  catch( e )
  {
    alert('Caught Exception: ' + e.description);
  }
}
</script>

<span style="cursor: pointer; text-decoration: underline" onclick="makeRequest('zapros1')">start</span>

</body>
</html>
Во втором случае я получаю сообщение httpRequest.status:=0
Какие будут советы?


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
kapbepucm
Дата 2.3.2011, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Отвечу, что я нашёл. Насколько я правильно понял, тут проблема не в технологии, а в том, что браузер по умолчанию блокирует такие действия. Возможно, как-то связано с безопасностью smile
Тема корректней звучала бы [AJAX] Получение ответов с другого сервера smile

Это сообщение отредактировал(а) kapbepucm - 3.3.2011, 09:50


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1212 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.