Подключение к API

Добрый день!
ЛЭРС Учет установлен на машине в локальной сети, пытаюсь воспользоваться примером из руководства для подключения к API:

$(document).ready(function () {
 
 // Разрешаем кроссдоменное взаимодействие (cross-domain, XCC - Cross-site scripting) по технологии CORS (Cross-origin resource sharing);
 jQuery.support.cors = true;
 
 // Отправляем запрос на вход в систему
 SendLoginRequest('Admin', 'admin');
});
 
 
function ReceivedLoginResponse(data) {
/// <summary>
/// Обработчик события успешного входа в систему
/// </summary>
 
 // Данные получаемые от сервера содержатся в свойстве d
 data = data.d;
 
 // Если есть ошибка, выводим её, иначе отправляем запрос на получение списка точек учета
 
 if (data.IsError);
         alert(data.ErrorMessage);
 else
         SendGetMeasurePointListRequest();
}
 
function ReceivedMeasurePointListResponse(data) {
/// <summary>
/// Обработчик события получения списка точек учета
/// </summary>
 
 // Данные получаемые от сервера содержатся в свойстве d
 data = data.d;
 
 // Если список точек учета не пустой отправляем запрос на получение потребления по первой точке учета из списка
 if (data.MeasurePointList.length > 0);
         SendGetMeasurePointConsumptionRequest(data.MeasurePointList[0].Number);
}
 
function ReceivedMeasurePointConsumptionResponse(data) {
/// <summary>
/// Обработчик события получение потребления по точке учета
/// </summary>
 
 // Данные получаемые от сервера содержатся в свойстве d
 data = data.d;
 
 // Если есть данные потребления, выводим сообщение со значением T_in за первую метку времени
 if (data.Consumption.length > 0);
 {
         var jsonDate = data.Consumption[0].DataDate
 
         var dataDate = new Date(parseInt(jsonDate.substr(6)));
         var T_in = data.Consumption[0].T_in;
 
         alert(dataDate.toString() + ': ' + T_in.toString());
 }
 else
         alert('По точке учета нет данных потребления.');
}
 
function SendLoginRequest(userName, password) {
/// <summary>
/// Отправляет запрос на вход в систему ЛЭРС УЧЕТ
/// </summary>
 
 $.ajax({
         type: "POST",
         url: "http://192.168.0.9/Api.asmx/Login",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         data: "{ 'userName':'" + userName + "','password':'" + password + "' }",
         success: ReceivedLoginResponse,
         error: function (jqXHR, textStatus, errorThrown) {
                 alert('Не удалось войти в систему.');
         }
 });
}
 
function SendGetMeasurePointListRequest() {
/// <summary>
/// Отправляет запрос на получение списка точек учета
/// </summary>
 
 $.ajax({
         type: "POST",
         url: "http://192.168.0.9/Api.asmx/GetMeasurePointList",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         data: "",
         success: ReceivedMeasurePointListResponse,
         error: function (jqXHR, textStatus, errorThrown) {
                 alert('Не удалось получить список точек учета.');
         }
 });
}
 
function SendGetMeasurePointConsumptionRequest(measurePointNumber) {
 /// <summary>
 /// Отправляет запрос на получение потребления за текущий месяц
 /// </summary>
 
 var nowDate = new Date();
 
 var currentStartDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), 1);
 var currentEndDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate());
 
 $.ajax({
         type: "POST",
         url: "http://192.168.0.9/Api.asmx/GetMeasurePointConsumptionDay",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         data: "{ 'measurePointNumber':" + measurePointNumber + ", 'startDate':'" + currentStartDate.toJSON() + "','endDate':'" + currentEndDate.toJSON() + "'}",
         success: ReceivedMeasurePointConsumptionResponse,
         error: function (jqXHR, textStatus, errorThrown) {
                 alert('Не удалось получить данные потребления по точке учета.');
         }
 });
}

В консоли выдается ошибка: XMLHttpRequest cannot load http://192.168.0.9/Api.asmx/Login. Origin http://map.local is not allowed by Access-Control-Allow-Origin.

В чем может быть дело?

Здравствуйте.
Скажите, какой браузер вы используете? В других браузерах скрипт работает? Какая версия IIS сервера?

Проблема заключается в междоменном взаимодействии (CORS). Браузер запрещает скрипту обращаться к веб-сервису расположенному на другом домене.

В скрипте это разрешается следующим путем. Но по каким-то причинам это не работает.

// Разрешаем кроссдоменное взаимодействие (cross-domain, XCC - Cross-site scripting) по технологии CORS (Cross-origin resource sharing);
 jQuery.support.cors = true;

Мы подробнее исследуем другие возможности разрешения междоменного взаимодействие завтра.

Браузер Chrome, но не работает во всех браузерах. Версия IIS: 5.1

Мы разобрались с ошибкой междоменного взаимодействия. Обновленный пример можно скачать с раздела загрузок.

Для вызова API с других сайтов, нужно добавить домен этого сайта в список разрешенных. Для этого выполните следующие действия:

  1. Откройте оснастку веб сервера IIS (“Панель управления” → “Администрирование” → “Internet Information Services”).
  2. Выберите сайт ЛЭРС УЧЕТ (“Веб-узел по умолчанию.”). Нажмите на пункт правой кнопкой и откройте окно свойств.
  3. Перейдите на вкладку “Заголовки HTTP”. Нажмите добавить специальный заголовок HTTP. Введите следующее: имя заголовка - “Access-Control-Allow-Origin”, значение заголовка - домен сайта, с указанием порта, для которого нужно разрешить вызов API (например “http://localhost:58035”). Нажмите ОК.
  4. Повторно нажмите кнопку добавить. Введите следующее: имя заголовка - “Access-Control-Allow-Credentials”, значение заголовка - “true”. Нажмите ОК.
  5. Примените настройки.

Мы не успели пока обновить описание интерфейса API и примеры описанные в документации. Мы сделаем это в ближайшее время.