Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию

Публикация № 1110191

Администрирование - Администрирование данных 1С

Инструкция Администрирование IIS веб-интерфейс SPA CORS веб сервисы odata

Если "веб морда" расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С - это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

В консоли браузера в это время будет наблюдаться такая картина:

Что такое CORS и зачем он нужен, можно почитать здесь: https://habr.com/post/337146/.


Рассмотрим случай 1:

В default.vrd жестко указан пользователь. Тогда можно воспользоваться только средствами 1с. К каждому шаблону URL добавляем обработчик для HTTP метода OPTIONS

с примерно таким кодом:

Процедура ЗаполнитьЗаголовки(Запрос, Ответ)
	
	Origin = Запрос.Заголовки.Получить("Origin");
	Если Origin = Неопределено Тогда
		Ответ.Заголовки.Вставить("Access-Control-Allow-Origin", "*");
	Иначе
		Ответ.Заголовки.Вставить("Access-Control-Allow-Origin", Origin);
	КонецЕсли;	
	Ответ.Заголовки.Вставить("Access-Control-Allow-Headers", "Authorization,Content-type");
	Ответ.Заголовки.Вставить("Access-Control-Allow-Methods", "GET, POST, PUT");// и какие там еще есть методы у данного шаблона запроса
	
КонецПроцедуры

Функция ШаблонOptions(Запрос)
	
	Ответ = Новый HTTPСервисОтвет(200);
	ЗаполнитьЗаголовки(Запрос, Ответ);
	Возврат Ответ;
	
КонецФункции

и все, теперь можно слать ajax запросы прямо из браузера к http сервисам 1с.

Теперь же рассмотрим случай 2:

у нас нет возможности управлять ответом 1с, например мы стучимся в стандартный интерфейс odata или у нас требуется авторизация, (на которую требуется разрешение на которое требуется авторизация...). В этом случае можно настроить IIS соответствующим образом. Для этого нужно сначала установить "установщик веб платформы" :) Для IIS. Кстати, полезная штука. Позволяет, например, быстро установить php так, что он работает из коробки. Для этого нужно пройти на сайт майкрософт и скачать оттуда дистрибутив. https://www.microsoft.com/ru-RU/download/details.aspx?id=6164. Почему это средство сразу не встроено в консоль управления IIS - не понятно. Очень сильно во многих случаях облегчает жизнь.

После установки запускаем Диспетчер служб IIS, теперь у нас появился новый пункт в настройках.

Запускаем его, в поиске вбиваем cors и получаем невзрачный результат:

Нажимаем "добавить, установить, принимаю, далее, далее, готово", получаем сообщение об успешной установке.

Теперь находим в дереве нашу публикацию, нажимаем на "Редактор конфигурации":

Заходим в раздел system.webServer/cors:

Затем в редакторе указываем enabled в true,

потом проваливаемся в загадочный пункт "(Коллекция)", нажимаем "добавить", заполняем данные:

allowCredentials:true // это как раз разрешение на отправку логина и пароля, для авторизации в 1с.

allowed: true

allowHeaders->allowAllRequestedHeaders: true // можно разрешить заголовки клиента по списку, но особого применения в плане использования с 1с я не вижу

allowMethods: коллекция, добавляем в неё все используемые нами методы, например у меня в добавок к GET и POST используются PUT, LOCK и UNLOCK

и самое главное: origin: тут указываем то, что будет в строке браузера (до первого слеша, для инфостарта это //infostart.dexcel.ru), при использовании нашего веб интерфейса. Например если мы разрабатываем фронт и используем вебпак с чем-то похожим на "npm run dev", то в большинстве случаев тут будет http://localhost:8080.

 

Повторяем для всех адресов origin, которые могут использоваться. К сожалению, использовать wildcard * для запросов с именами авторизацией (где передаются имена пользователей и пароли) нельзя. После этого не забываем нажать на "Применить" в правом верхнем углу и все, должно заработать. Однако, если мы имеем случай 1 из данной статьи (жестко забитый в default.vrd пользователь 1с), то вместо конкретного origin можно указать * и все будет работать.

Надеюсь, эта статья будет полезна.

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Labotamy 20.08.19 13:12 Сейчас в теме
Спасибо! С Апачем все почти тривиально, а вот как решать в IIS ответа не встречал.
2. swenzik 20.08.19 14:34 Сейчас в теме
(1) примерно так же как в апаче, кладёшь в папку публикации web.config с содержимым
<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>
Показать

устанавливаемый модуль в IIS делает тоже самое, по сути это гуйный конфигуратор
3. Fragster 986 20.08.19 14:53 Сейчас в теме
(2) не совсем. customHeaders работает для случая 1 из статьи, но нет возможности использовать авторизацию для нескольких origin, например.
4. Labotamy 20.08.19 19:03 Сейчас в теме
(2)Access-Control-Allow вряд-ли полечит отсутствие options в odata
5. Labotamy 20.08.19 22:45 Сейчас в теме
А пусть для Апача тоже тут полежит.
 RewriteEngine On                  
 RewriteCond %{REQUEST_METHOD} OPTIONS 
 RewriteRule ^(.*)$ $1 [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]]
vladimirmatancev; sorb; A_Max; Fragster; JohnyDeath; +5 Ответить
6. Yashazz 2985 21.08.19 11:13 Сейчас в теме
Ценно. Один раз методом тыка смог победить, спасибо за нормальное систематизированное описание.
7. vandalsvq 1141 05.10.19 14:59 Сейчас в теме
(0) в свое время немного писал по этому вопросу у себя в статье (кроссдоменные запросы). Потом тоже перешел к тому, что во все интерфейсы добавил Options. Про настройку IIS приходило в голову, но руки не доходили. Спасибо что описали. Полезная информация.
8. Feelthis 36 06.02.20 09:19 Сейчас в теме
Если для локальной разработки веб приложения использовать nginx, то можно заюзать nginx-proxy.
То есть при http запросах например на http://myapp/api1c/ - запросы будут проксироваться на 1с сервер: http://server-1c.local
Пример конфига:

upstream api_server {
server server-1c.local;
}

server {
listen 80;
root /home/sergey/www/myapp/dist;
index index.php index.html index.htm index.nginx-debian.html;
server_name myapp;

location / {
#try_files $uri $uri/ =404;
#try_files $uri $uri/ /index.html;
proxy_pass http://localhost:8080/;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}

location ~ /\.ht {
deny all;
}

location /api1c/ {
rewrite /api1c/(.*) /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://server-1c.local;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_redirect off;
}

}
9. Fragster 986 06.02.20 13:30 Сейчас в теме
(8) да, таким образом вы заставляете браузер думать, что он работает в пределах одного домена. Отдельно отмечу важность заголовка X-Forwarded-For для 1с (в конфиге упомянут).
Оставьте свое сообщение

См. также

Самый примитивный HTTP-сервис в мире

Статья Программист Нет файла v8 Бесплатно (free) WEB

Пошаговый пример создания простейшего HTTP-сервиса, который генерирует HTML-страницу для поиска товара, а также реализует асинхронное получение данных из базы.

12.09.2019    11895    YPermitin    26       

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

Как настроить сервер 1С по умолчанию для ПРОФ лицензии после 10.09.2019

Статья Системный администратор Нет файла v8 Бесплатно (free) Администрирование данных 1С

Здесь мы собираем все данные по настройкам сервера для работы ПРОФ лицензии.

11.09.2019    45668    infostart    90       

Использование Zabbix для сбора информации о серверных вызовах и управляемых блокировках с сервера 1С Предприятия, работающего на платформе GNU/Linux

Статья Системный администратор Программист Нет файла v8 Linux Бесплатно (free) Администрирование данных 1С Zabbix

Описанные в данном опусе механизмы ни в коей мере не противопоставляются тому, что реализует КИП от 1С или какие-либо другие инструменты (решения)! Это всего лишь еще один взгляд на "проблему", который может быть полезен в некоторых ситуациях.

10.09.2019    11264    Sloth    11       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Дополнение к контролю остатков

Статья Программист Нет файла v8 ERP2 УТ11 КА2 БУ УУ Учет ТМЦ Бесплатно (free) Обработка документов

Огорчает один момент в типовых решениях, когда проводится документ, ругаясь на нехватку остатков, система не сообщает, по какому именно регистру проблема. Дополнив сообщения контроля названием регистра, можно уменьшить время расследования проблемы (исключив из процесса необходимость запуска программистом отладки в конфигураторе для выявления имени проблемного регистра).

15.08.2019    9697    8    sapervodichka    15       

Уверенное обновление

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

Уверенное обновление. Анализ файла ОтчетОСравнении.txt. Bash

18.07.2019    8192    vasilev2015    36       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

Почему Вы не обслуживаете итоги?

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

Небольшая заметка по обслуживанию итогов. Все ли Вы делаете правильно?

04.07.2019    12483    YPermitin    27       

За 5 шагов добавляем мониторинг счетчиков производительности серверов MS SQL и 1С

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Статистика базы данных Производительность и оптимизация (HighLoad)

Мы расскажем и покажем, как добавить данные счетчиков производительности серверов 1С и MS SQL в нашу базу мониторинга за 15 минут. Приведем список наиболее важных из них, опишем основные особенности.

28.05.2019    12145    ivanov660    9       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

1Script.Web. Интернет-приложения на языке 1С

Статья Программист Нет файла v8 Бесплатно (free) WEB OneScript

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    15403    Evil Beaver    32       

Опыт обновления до 8.3.14 - лицензии и утилита ring

Статья Системный администратор Нет файла v8 Windows Бесплатно (free) Администрирование данных 1С

На выходных было скучно, поэтому решили обновить 1с до 8.3.14.1694. С лицензиями пришлось немного повозиться.

29.04.2019    30839    Sander80    30       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

Практика перехода на Linux и Postgres в небольшой компании (10 пользователей)

Статья Системный администратор Программист Нет файла v8 1cv8.cf Ubuntu Бесплатно (free) Администрирование данных 1С

Почему я решил поставить давнему клиенту Linux + Postgres вместо Windows + MS SQL? Что меня останавливало раньше?

22.04.2019    23675    starik-2005    159       

HTML-клиент у конфигурации 1С

Статья Программист Нет файла v8 Бесплатно (free) WEB

Приветствую. В этой публикации опишу свой опыт создания html-клиента для конфигурации 1С с помощью http-сервисов. HTML-клиент в этом случае - это frontend (html + css+ js), который генерирует и выдает пользователю конфигурация + backend, который тоже реализован в этой же конфигурации.

17.04.2019    13730    Smaylukk    119       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.

6500 рублей

Debian 9.7 + PostgreSQL для 1С. Как завести с пол-оборота

Статья Системный администратор Нет файла v8 Бесплатно (free) Администрирование данных 1С

Предлагаю взять на заметку информацию по установке и настройке в формате typical, typical, done.

02.02.2019    17166    valentinko    15       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

1С и Яндекс.Облако Compute Cloud. Вдоль и поперек

Статья no Нет файла v8 Бесплатно (free) Администрирование данных 1С

Бороться и искать. Найти и перепрятать. Достаточно популярная поговорка во времена Союза. Вот и сейчас, те у кого сервер 1С в локальной сети мечтают вынести его в облако, а те у кого в облаке прикупить свой в локальную сеть. Тестирование Яндекс.Облако Compute Cloud для 1С Предприятие оставило у меня приятное впечатление. Возможно кто-то повторит его и внесет больше ясности в настройки виртуальных серверов, использованию API и так далее. Пока же пользуйтесь чем я послал. Интересующихся прошу под кат…

20.01.2019    13041    capitan    29       

Малоизвестная хитрость определения модуля и номера строки при возникновении исключения (без запуска отладки и конфигуратора). Несколько очень удобных, но малоиспользуемых возможностей работы в конфигураторе

Статья Программист Нет файла v8 Россия Бесплатно (free) Тестирование и исправление

В статье описана возможность получить место возникновения исключения при работе пользователей без участия конфигуратора. Подробно описаны еще некоторые очень полезные приемы при работе в отладке.

17.01.2019    21090    PoZiTiFFF    53       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Копирование числовых ячеек из 1С в Excel

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Загрузка и выгрузка в Excel Администрирование данных 1С

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

15.01.2019    15518    itriot11    21       

Восстановление базы 1С, ошибка источника потока

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Тестирование и исправление

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

09.01.2019    14198    idle    25       

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана

Статья Системный администратор Нет файла v8 Бесплатно (free) Администрирование данных 1С

Если кратко описать мое отношение к Postgres: Использовал до того, как это стало мейнстримом. Конкретнее: Собирал на нем сервера для компаний среднего размера (до 50 активных пользователей 1С). На настоящий момент их набирается уже больше, чем пальцев рук пары человек (нормальных, а не фрезеровщиков). Следуя этой статье вы сможете себе собрать такой же и начать спокойную легальную жизнь, максимально легко сделать первый шаг в мир Linux и Postgres. А я побороться за 1. Лучший бизнес-кейс (лучший опыт автоматизации предприятия на базе PostgreSQL). Если, конечно, статья придется вам по вкусу.

25.12.2018    28663    2    capitan    147       

Чем PostgreSQL может быть полезен разработчику 1С

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Администрирование данных 1С

В статье будут рассмотрены примеры, которые могут оказаться полезными в повседневной работе разработчика 1С и не только: как можно сделать снимок рабочей базы без файла резервной копии, как можно эффективно использовать табличные пространства СУБД PostgreSQL, а также как организовать простой и удобный доступ к админке СУБД посредством мобильных устройств.

20.12.2018    18565    Shmell    38       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций

Заметки про лицензии 1С

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

Решил собрать шпаргалку по лицензиями 1С о разных нюансах, с которыми успел столкнуться.

15.12.2018    16502    MrWonder    22       

Создание телеграм бота с гугл авторизацией, обратными вызовами и уведомлениями об обновлении через сервер-маршрутизатор

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) WEB

Статья детально рассказывает обо всех аспектах настройки телеграм бота, работающего через сервер-маршрутизатор посредством обратных вызовов. Приведены примеры работы отправки/исправления сообщений, отправки файлов, работы с внутренними и встроенными запросами. Создание клавиатуры. Авторизация пользователей через gmail.

07.11.2018    22574    🅵🅾️🆇    44       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Когда 1С падает в дамп

Статья Системный администратор Нет файла v8 Windows Бесплатно (free) Администрирование данных 1С

Мой опыт устранения проблемы, при которой вылетала платформа 1С.

11.10.2018    38066    987ww765    37       

Кластер серверов 1С

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Администрирование данных 1С

Какой уровень отказоустойчивости при проектировании серверов 1С выбрать? В чем отличия центрального и рабочего сервера? Как правильно настроить требования назначения функциональности? На что влияют настройки кластера и сервера 1С и как в них не запутаться? Антон Дорошкевич дает на эти и многие другие вопросы подробные ответы.

24.09.2018    34371    a.doroshkevich    65       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

На что действительно способны HTTP-сервисы

Статья Программист Нет файла v8 Бесплатно (free) WEB

В статье я собираюсь не только рассказать вам про HTTP-сервисы 1С, но и показать много прикольных слайдов с картинками. Я думаю, будет весело, и вы найдете для себя что-то полезное.

14.06.2018    29097    dalgaso2010    45       

[Шпаргалка] Несколько версий сервера 1С на одном сервере (компьютер)

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Администрирование данных 1С

Публикация-шпаргалка. Если у вас возникала необходимость в размещение нескольких серверов 1С разных версий на одном сервере (компьютере).

14.05.2018    20053    rpgshnik    27