Как запустить изолированную среду Node.js внутри браузера?

Я пытаюсь использовать изоморфный мерзавец для выполнения git clone команда на стороне браузера. Но из-за того, что я придерживаюсь политики одного и того же происхождения, я не могу отправить запрос к другому источнику в GitLab нашей компании, если я не могу использовать cors-proxy. В целях безопасности команда нашей компании GitLab не желает изменять конфигурацию CORS. Казалось, что нет способа клонировать код со стороны браузера. Между тем, isomorphic-git предоставляет версию узла для клонирования кода, больше нет проблем с перекрестным происхождением. Но я не хочу использовать для этого еще один сервер узлов. Можно ли запустить изолированную среду Node.js внутри браузера?

Использование isomorphic-git для клонирования кода из GitHub с помощью corsProxy:

await git.clone({
  dir,
  corsProxy: 'https://cors.isomorphic-git.org',
  url: 'https://github.com/isomorphic-git/isomorphic-git',
  ref: 'master',
  singleBranch: true,
  depth: 10
});

2 ответа

Мне кажется, что ответ "нет", потому что даже если вы как-то вставили NodeJS (эмулятор? Среда? Вещь?) В поток JavaScript, когда он захотел git clone, это должно было бы вызвать API браузера. Тогда вы находитесь в том же месте: JavaScript все еще подчиняется политике того же происхождения.

Если вы можете справиться с этим, вы должны изучить возможность получения вознаграждения за ошибки; звучит как большой недостаток безопасности:-)

Если ваш проект небольшой, вы можете использовать бесплатный прокси-сервер cors — https://cors.isomorphic-git.org/ для клонирования репозитория на стороне браузера.

Применение:

      git.clone({
    fs,
    http,
    dir,
    corsProxy: 'https://cors.isomorphic-git.org',
    url: 'https://github.com/example.git',
    ref: 'master',
    singleBranch: true,
    depth: 10
});

Ссылка: https://github.com/isomorphic-git/isomorphic-git#cors-support

Другие вопросы по тегам