Composer 默认使用 HTTPS,通过配置 secure-http=true 可强制禁用 HTTP。需确保仓库地址为 HTTPS,如官方 Packagist 或阿里云、Laravel China 等镜像源,并通过 composer config 命令设置项目或全局配置,最后用 -vvv 验证请求均为 HTTPS。

Composer 默认会优先使用 HTTPS 协议与 Packagist 或自定义仓库通信。如果你发现 Composer 使用了 HTTP 或者想确保它只使用 HTTPS,可以通过以下几种方式强制启用 HTTPS。
1. 配置全局 repo 并指定 HTTPS 地址
确保你的 composer.json 或全局配置中没有引用任何使用 HTTP 的自定义仓库。例如,Packagist 的官方地址应为:
{ "repositories": [ { "type": "composer", "url": "https://packagist.org" } ] }如果你之前添加了 HTTP 地址,改为 HTTPS,或删除后让 Composer 使用默认值(默认就是 HTTPS)。
2. 禁用不安全的 HTTP 请求
Composer 提供了一个选项来禁止通过不安全的 HTTP 协议下载包。在项目或全局的 config 中设置:
{ "config": { "secure-http": true } }开启 secure-http 后,Composer 会拒绝任何使用 HTTP 的仓库,防止意外降级到不安全连接。
你可以在项目目录下运行以下命令设置:
composer config secure-http true
这会在当前项目的 composer.json 中写入 config.secure-http = true。如需全局设置:
composer config --global secure-http true
3. 检查环境和镜像源
某些国内镜像源可能曾提供 HTTP 接口。确保你使用的镜像是 HTTPS 的。例如,阿里云、Laravel China 的镜像都支持 HTTPS:
- 阿里云 Composer 镜像:https://mirrors.aliyun.com/composer/
- Laravel-China 镜像:https://packagist.laravel-china.org
使用 HTTPS 镜像并配合 secure-http=true 可完全杜绝明文传输。
4. 强制更新并验证连接
执行更新时观察网络请求是否走 HTTPS:
composer update -vvv
-vvv 参数显示详细日志,你可以看到每个请求的 URL 和协议。如果出现 HTTP,会直接报错(当 secure-http=true 时)。
基本上就这些。只要开启 secure-http 并确保仓库 URL 是 HTTPS,Composer 就不会使用 HTTP。这个机制简单有效,推荐所有项目默认开启。










