Вызов ЕТЛ-интеграции КД, по URL, из внешней системы - из макроса Р7 офиса

отредактировано 14 янв Раздел: Интеграция данных

Коллеги, привет!
Возник вопрос вызова ЕТЛ-интеграции КД по URL её хука, из внешних систем. POST методом, с передачей параметров. Из MS Excel из VBA кода вызовы идут успешно, POST параметры передаются, полученные из ЕТЛ данные в JSON формате успешно парсятся - всё ОК.
Но. Когда-то от МС Эксель придется отказаться. В пользу Р7, в нашем случае.
Попытка вызова ЕТЛ-интеграции КД по ее URL выдает сообщения об ошибке, связанные с междоменными CORS запросами. Различные заголовки были прописаны в вызове, но это не помогло, к сожалению. При этом, повторюсь, из Эксель ВБА вызовы идут успешно.
Ошибки вида:
Access to XMLHttpRequest at '...hooks/etl?ident=LIST_REQUEST_INN2' from origin 'file://' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
.../hooks/etl?ident=LIST_REQUEST_INN2:1 Failed to load resource: net::ERR_FAILED
Прошу Вас помочь с примером вызова ЕТЛ КД из макроса Р7 офиса. Могу предоставить наш тестовый XLSX файл, созданный в Р7.
Спасибо.
С уважением,
Валерий

Комментарии

  • Добрый день, Валерий! Подготовим для вас ответ.

  • Попробуйте на балансировщике добавить заголовок в ответ Access-Control-Allow-Origin с адресом внешней системы.

  • Доброе утро! Внешняя система, по отношению к Р7 офису - это и есть платформа КД. И вызов с тест стенда, где нет балансировщика (там одна нода) также не проходит. Верно ли я понял, что на таком стенде (условно https://my_url.com:8080/#) также нужно добавить заголовок в ответ Access-Control-Allow-Origin с адресом самого стенда?

  • Доброе утро, Валерий! Уточняем информацию. Вернемся с ответом.

  • CORS настраивается не в вызове, а в ответе. Настраивается на балансировщике.
    Но для локального запуска из файла нет нормального origin, поэтому CORS не позволяет получить доступ из локального файла.
    Можно попробовать добавить заголовок Allow-Control-Allow-Origin: *
    Но это не безопасно.
    Еще можно попробовать использовать GET-запрос. Встроенный браузер не должен проверять CORS для GET.
    Рекомендуем обратиться к разработчикам Р7 с вопросом об отключении проверки CORS.

  • Антон, добрый день! Спасибо за исследования и подсказку, подумаем, по какому пути пойдем.
    Альтернатива - сделать импорт в КД файлов XLSX, созданных в Р7.

Войдите или Зарегистрируйтесь чтобы комментировать.