Golang Go语言中原来 go mod 是不支持 http 的

Golang Go语言中原来 go mod 是不支持 http 的

想搞定下 go mod 对私有仓库的支持,gitee 上建了个私有仓库 2 下就搞定了

公司内部的 git lab 是 http 的,半天也搞不定,后来看见了这个 issue

cmd/go: mod download doesn't allow insecure download


更多关于Golang Go语言中原来 go mod 是不支持 http 的的实战教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

issue 是说缺少对应 CA 证书的问题吧,或者说缺少类似 ca-certificates 这种包

更多关于Golang Go语言中原来 go mod 是不支持 http 的的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


哦,好吧,我最开始是从[这个问题来的]( https://github.com/golang/go/issues/31741), 然后这个问题被标记未和[cmd/go: mod download doesn’t allow insecure download #27332]( https://github.com/golang/go/issues/27332)重复了,其实就是一个意思

内部也可以部署上一个证书啊

这里提供了两种解决方案,供参考 https://gocn.vip/topics/9803

哦,看看

在Go语言的模块管理系统中,go mod 确实在早期版本中不支持直接从HTTP源拉取模块。这一设计决策主要是出于安全性和稳定性的考虑。Go团队希望确保模块数据的完整性和来源的可靠性,因此推荐使用更加安全的协议,如HTTPS。

不过,随着Go语言的不断发展和社区需求的增加,对模块源的支持也在逐步扩展。虽然go mod本身不直接支持HTTP,但你可以通过以下几种方式间接实现类似的功能:

  1. 私有模块仓库:许多企业和团队使用私有模块仓库(如Artifactory、Nexus等)来存储和管理内部模块。这些仓库通常支持HTTPS协议,从而确保数据传输的安全性。

  2. 代理服务:你可以设置一个Go模块代理服务,该服务可以从HTTP源拉取模块并将其缓存为HTTPS服务。这样,你的Go项目就可以通过代理服务安全地获取所需的模块。

  3. 本地镜像:对于某些无法直接通过HTTPS获取的模块,你可以手动下载它们并存储在本地。然后,通过配置GOPRIVATE环境变量或go.mod文件中的replace指令,将项目指向这些本地镜像。

总之,虽然go mod不直接支持HTTP,但Go社区和工具链提供了多种方法来处理这种情况。建议始终优先考虑使用HTTPS协议来确保模块数据的安全性和完整性。

回到顶部