我正在尝试使用同构-git在浏览器端执行git clone命令。但由于坚持同源策略,如果没有cors-proxy可以使用,我不能向我们公司的GitLab发起跨域请求。出于安全考虑,我们公司的GitLab团队不愿意更改CORS配置。似乎没有办法从浏览器端克隆代码。同时,同构-git提供了节点版本来克隆代码,不再存在跨源问题。但是我不愿意再利用一个节点服务器来做这件事。可以在浏览器中启动隔离的Node.js环境吗?
在corsProxy中使用同构-git从GitHub克隆代码:
await git.clone({
dir,
corsProxy: 'https://cors.isomorphic-git.org',
url: 'https://github.com/isomorphic-git/isomorphic-git',
ref: 'master',
singleBranch: true,
depth: 10
});发布于 2019-08-20 11:05:56
在我看来答案是否定的,因为即使你嵌入了一个NodeJS (仿真器?环境?事情?)在API线程内部,当它想要git clone时,它必须调用浏览器的API。那么你仍然在同一个地方: JavaScript仍然受同源策略的约束。
如果你能做到这一点,你应该考虑获得一个错误赏金;听起来像是一个很大的安全缺陷:-)
发布于 2021-01-27 22:43:36
如果你的项目很小,你可以使用免费的cors proxy - 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
https://stackoverflow.com/questions/57566132
复制相似问题