答案是composer config secure-http false不生效,因该命令仅写入项目级composer.json,而secure-http是全局配置项,Composer优先读取~/.composer/config.json;正确做法是加--global参数,且Composer 2.5+需配合--no-secure-http运行时参数才生效。

不能通过 config 设置“允许不安全协议源”来绕过安全限制——这不是配置问题,而是设计上的拒绝。
为什么 composer config secure-http false 常常不生效
这条命令默认只写入当前项目的 composer.json,但 secure-http 是全局配置项,Composer 优先读取 ~/.composer/config.json(或 $COMPOSER_HOME/config.json)。项目级配置根本不会覆盖它。
- 执行后运行
composer config --list | grep secure-http仍输出true - 报错仍是
The 'http://' URL 'http://xxx' is not allowed - 正确做法是加
--global参数:composer config --global secure-http false - 验证是否生效:
composer config --global --list | grep secure-http,确认输出为secure-http=false
Composer 2.5+ 中 secure-http 已被弃用,必须用 --no-secure-http
从 Composer 2.5 开始,secure-http 配置项默认被忽略——不是 bug,是设计变更。光改配置不生效,必须配合运行时参数。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 临时绕过(仅当次命令):
composer update --no-secure-http或composer install --no-secure-http - 手动编辑
~/.composer/config.json时,多一个逗号、少一个引号都会导致整段配置失效 - 即使设为
false,也只禁用元数据(如packages.json)的 HTTPS 强制要求,不保证 dist 包本身加密传输
HTTP 源实际启用后,签名验证和包来源校验会彻底失效
一旦启用 HTTP 源(哪怕只是临时加个 --no-secure-http),以下关键防护机制即刻退出:
-
signature verification: OK将变为FAIL,因为签名头X-Content-Signature仅在 HTTPS 响应中由官方镜像转发 - 只要
repositories字段存在(包括空值、"type": "package"),Composer 就不再检查包是否注册在packagist.org -
composer diagnose输出中若缺失signature verification: OK,说明整个依赖链已失去可信锚点
真正危险的不是“连不上”,而是“连上了却不知道内容是否被篡改”。强制 HTTPS 和签名验证是两层独立防线,缺一不可;关掉任一扇门,供应链投毒风险就直接暴露在公网之下。

















