Вопрос

CORS и авторизация из клиентского кода JavaScript

Существует необходимость использования веб-сервисов приложения из клиентского кода JavaScript некоторого корпоративного портала. (т.е. из браузера - клиентский JS)
Обращению к сервису авторизации в данном случае препятствует технология CORS (Cross-origin resource sharing)
В попытках разрешить возникшую проблемную ситуацию были проделаны следующие действия, в файл
web.config (В корне сайта BPMOnline) в соответствующую директиву system.webServer
добавлены CORS-Allow-Access заголовки:

       
           
               
               
               
               
           

       


В конечном итоге - запрос OPTIONS к серверу на разрешение осуществления кросс-доменного запроса проходит, ответ содержит необходимые заголовки:

но, запрос все равно не осуществляется, происходит ошибка:
FF:
GH:

 

Происходит это по причине того, что обращение запроса OPTIONS на Login.aspx в конечном итоге разрешается ответом с кодом состояния HTTP 302 (Ресурс временно перемещен) и перенаправляет на
/NuiLogin.aspx?ReturnUrl=%2f0%2fServiceModel%2fAuthService.svc%2fLogin
Поиск по разрешению вопросов данной ошибки, в основном сводится к описанию случаев когда целевой сервер принимающий кросс-доменные запросы находится за Mirror Proxy или по запросу осуществляется редирект (Это как раз наш случай)
Но явного решения для данного вопроса, особенно в случае с веб-сервером IIS 7-8.5 найти не удалось, да и он в первую очередь лежит в плоскости логики работы самого ASP-приложения.

Прошу помощи у коллективного разума - что еще можно попробовать сделать для решения данной задачи ?
Возможно все таки кто-то уже имел опыт работы с веб-сервисами BPMOnline из клиентского кода JavaScript исполняемого в браузере. (Для веб-сервисов возможность такого взаимодействия кажется чуть ли не основополагающей).

Нравится

4 комментария

Добрый день, Илья.

К сожалению, на данный момент вызвать web сервис из клиентского кода другого приложения у Вас не выйдет. Рекомендую Вам смотреть в сторону вызова из Node.js или же сервиса, написанного на .Net.

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

Мотков Илья,

В 7.12 такая возможность появилась? как настроить?

Евгений Волоцкой,

Возможно эта ветка вам будет полезной: 

https://community.terrasoft.ru/questions/krossdomennyi-zapros-iz-js

Показать все комментарии