Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline codegen  
#1 Оставлено : 12 ноября 2015 г. 14:09:54(UTC)
codegen

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.08.2008(UTC)
Сообщений: 204
Мужчина
Российская Федерация

Сказал «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Здравствуйте!
Используем в своем проекте КриптоПро ЭЦП Browser plug-in. Реализация на promise.
Все работает и все хорошо, но:
Каждый день начинается в того, что вылетает ошибка в функции check_plugin_working():
Код:

Uncaught ReferenceError: cpcsp_chrome_nmcades is not defined(anonymous function) @ cadesplugin_api.js:256
eds.js:20 TypeError: Cannot read property 'CreateObjectAsync' of undefined(…)continuer @ eds.js:20spawn @ eds.js:34Crypto.getCertificatesFromStore @ eds.js:74Crypto.getNonExpiredCertificatesFromStore @ eds.js:153Widget.interface.getCertificates @ controller.js:166Widget.interface.init @ controller.js:211(anonymous function) @ knockout.bindings.js:69i.execCb @ require.js:29Z.check @ require.js:18(anonymous function) @ require.js:23(anonymous function) @ require.js:8(anonymous function) @ require.js:23v @ require.js:7Z.emit @ require.js:23Z.check @ require.js:19Z.enable @ require.js:23Z.init @ require.js:17(anonymous function) @ require.js:21(anonymous function) @ require.js:8(anonymous function) @ require.bundles.js:12i.execCb @ require.js:29Z.check @ require.js:18(anonymous function) @ require.js:23(anonymous function) @ require.js:8(anonymous function) @ require.js:23v @ require.js:7Z.emit @ require.js:23Z.check @ require.js:19(anonymous function) @ require.js:23(anonymous function) @ require.js:8(anonymous function) @ require.js:23v @ require.js:7Z.emit @ require.js:23Z.check @ require.js:19Z.enable @ require.js:23Z.init @ require.js:17(anonymous function) @ require.js:21(anonymous function) @ require.js:8(anonymous function) @ require.bundles.js:12i.execCb @ require.js:29Z.check @ require.js:18(anonymous function) @ require.js:23(anonymous function) @ require.js:8(anonymous function) @ require.js:23v @ require.js:7Z.emit @ require.js:23Z.check @ require.js:19Z.enable @ require.js:23Z.init @ require.js:17E @ require.js:14i.completeLoad @ require.js:28i.onScriptLoad @ require.js:29


После F5 проблема исчезает и больше не появляется. Однако на следующий день все повторяется вновь.
Версия плагина: 2.0.12245 Версия CSP: 3.9.8339
CryptoPro Extension for CAdES Browser Plug-in 1.0.12
Browser: Google Chrome (версия на момент теста Версия 46.0.2490.80 m)
На других версиях КриптоПро ситуация аналогичная.
Ошибка проявляется и на Linux и на Windows.
Подскажите пожалуйста куда копать и в чем может быть проблема?
Offline cross  
#2 Оставлено : 12 ноября 2015 г. 14:40:17(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
А можно посмотреть как у вас в коде реализовано активация плагина? На наших демостраницах тоже раз в день ошибка такая выскакивает?
https://www.cryptopro.ru/cadesplugin
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline codegen  
#3 Оставлено : 12 ноября 2015 г. 14:57:51(UTC)
codegen

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.08.2008(UTC)
Сообщений: 204
Мужчина
Российская Федерация

Сказал «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Код:
/**
         * Создание CADES объекта в целях унификации интерфейса всегда отдает Promise.
         * @param name
         * @returns {Promise}
         */
        createObject: function (name) {
            if (cadesplugin.CreateObjectAsync) {
                return cadesplugin.CreateObjectAsync(name);
            } else {
                return new Promise(function (resolve, reject) {
                    try {
                        resolve(cadesplugin.CreateObject(name));
                    } catch (error) {
                        reject(error);
                    }

                });
            }
        },


На страницу подключается следующим образом:
Код:
<script type="text/javascript" src="{{ asset('bundles/diflowcore/libs/es6-promise.min.js') }}"></script>
<script type="text/javascript" src="{{ asset('bundles/diflowcore/libs/browser-polyfill.min.js') }}"></script>
<script type="text/javascript" src="{{ asset('bundles/diflowcore/libs/cadesplugin_api.js') }}"></script>
<script type="text/javascript" src="{{ asset('bundles/diflowcore/config/require.config.js') }}"></script>
<script type="text/javascript" src="{{ asset('bundles/diflowcore/libs/require.js') }}" data-main="{{ asset('bundles/diflowcore/app/' ~ app.environment ~ '/core/init.core.js') }}"></script>

Т.е. сначала грузится plugin, потом уже require js и только потом с помощью require.js уже начинается подгрузка ядра и модулей системы, которые используют cades plugin

На демо страницу зашел, все заработало с первого раза.
Offline cross  
#4 Оставлено : 12 ноября 2015 г. 15:22:13(UTC)
Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Посмотрите на демостранице есть код который перед использованием проверяет что плагин уже загружен. Включение файла в определенном порядке не всегда помогает. Т.к. cadesplugin_api.js динамически подключает другие файлы из расширения. Выглядит примерно так:
Код:
 cadesplugin.then(function () {
                       //App Code
                     },
                     function(error) {
                         document.getElementById('PluginEnabledImg').setAttribute("src", "Img/red_dot.png");
                         document.getElementById('PlugInEnabledTxt').innerHTML = error;
                     }
                   );

После того как promise cadesplugin отрезолвился, можно использовать вызовы из плагина.

Отредактировано пользователем 12 ноября 2015 г. 15:23:27(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.