Вызов ЕТЛ-интеграции КД, по URL, из внешней системы - из макроса Р7 офиса
Коллеги, привет!
Возник вопрос вызова ЕТЛ-интеграции КД по 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.