Сайт не защищен в окне кипариса - PullRequest
0 голосов
/ 30 октября 2019

Наш сайт защищен, а в Chrome также отображается значок «Защищено». Но когда я запустил проверку автоматизации кипариса, окно кипариса показывает «Не защищено». Таким образом, я получил ошибку ниже на консоли, и страница не загружена.

SecurityError: Небезопасное соединение SockJS не может быть инициировано со страницы, загруженной по HTTPS

изображение ошибки

Как решить эту проблему

Примечание: у нас есть клиент sockJs. Поэтому sockjs-client выдает эту ошибку.

sockjs-client / lib / main.js: 79

if (loc.protocol === 'https:' && !secure) { 
   throw new Error('SecurityError: An insecure SockJS connection may not be initiated from a page loaded over HTTPS'); 
 }  

1 Ответ

0 голосов
/ 31 октября 2019

Если вы хотите просто взломать эту ошибку (в отличие, например, не выкидывать ошибку на localhost, в первую очередь), вы можете отключить ее следующим образом.

Я учел то, что вынаписал в комментариях, и пока я не знаю причину, давайте выведем большие пушки. Если это не работает, то я не знаю.

Предполагается, что вы используете cy.visit для загрузки своей страницы. Кроме того, это не будет работать для нестраничных тестов (например, когда вы вообще не загружаете страницу).

// cypress/support/index.js

Cypress.Commands.overwrite( 'visit', (origFn, url, opts = {}) => {
  // normalize arguments
  // -------------------------------------------------------------------------
  if ( typeof url == 'string' ) {
    opts.url = url;
  } else {
    opts = url;
  }

  // overwrite onBeforeLoad
  // -------------------------------------------------------------------------
  const _onBeforeLoad = opts.onBeforeLoad;
  opts.onBeforeLoad = function ( win ) {

    // monkey-patch `window.onerror` callback which Cypress uses for error
    //  handling. When cypress starts to use `addEventListener`, then we're
    //  in trouble.
    // Note: By this time, Cypress should have added the callback. If this
    //  wasn't the case, we'd have to add a setter on `window.onerror` and
    //  ensure we wrap the callback, there.
    const _onerror = win.onerror;
    win.onerror = function ( err ) {
      if (
        typeof err === 'string' &&
        err.includes('SecurityError: An insecure SockJS')
      ) return;

      _onerror.call(win, ...arguments);
    }
    // add a regular listener in order to prevent logging to devTools console
    win.addEventListener('error', ev => {
      if (
        ev && typeof ev.message === 'string' &&
        ev.message.includes('SecurityError: An insecure SockJS')
      ) {
        ev.preventDefault();
        ev.stopImmediatePropagation();
      }
    });

    // call user-supplied `onBeforeLoad` callback, if supplied
    if ( _onBeforeLoad ) _onBeforeLoad(win);
  }
  // -------------------------------------------------------------------------
  return origFn(opts);
});

Также смотрите отключение обработки всех необработанных исключений

...