You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QML中使用XMLHttpRequest如何忽略或信任自签名HTTPS证书

解决方案

注意:QML 层面的 XMLHttpRequest 没有暴露 SSL 证书错误处理的相关接口,所有证书相关的配置都需要在 C++ 侧修改 Qt 网络模块的全局配置完成。

以下是两种适配方案:

方案1:配置信任自签名证书(生产环境推荐)

将你生成的自签名证书加入 Qt 全局信任证书列表,不会影响其他请求的安全性,操作步骤如下:

  1. 将你的自签名证书(如PEM格式的crt文件)放入项目资源目录
  2. 在 main 函数加载 QML 前添加如下代码:
#include <QCoreApplication>
#include <QQmlApplicationEngine>
#include <QSslConfiguration>
#include <QSslCertificate>
#include <QFile>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    // 加载自定义自签名证书
    QFile certFile(":/资源路径/你的证书文件名.crt");
    if (certFile.open(QIODevice::ReadOnly)) {
        QSslCertificate customCert(&certFile, QSsl::Pem);
        QSslConfiguration defaultConfig = QSslConfiguration::defaultConfiguration();
        QList<QSslCertificate> trustedCerts = defaultConfig.caCertificates();
        // 将自定义证书加入信任列表
        trustedCerts.append(customCert);
        defaultConfig.setCaCertificates(trustedCerts);
        QSslConfiguration::setDefaultConfiguration(defaultConfig);
        certFile.close();
    }

    QQmlApplicationEngine engine;
    engine.load(u"qrc:/你的主QML文件路径.qml"_qs);
    return app.exec();
}

配置完成后原有 QML 代码无需修改即可正常请求接口。

方案2:临时忽略SSL证书错误(本地测试专用,类似浏览器跳过警告效果)

如果仅用于本地调试,不需要考虑安全性,可以全局忽略所有SSL证书校验错误,代码如下:

#include <QCoreApplication>
#include <QQmlApplicationEngine>
#include <QSslSocket>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    // 全局忽略SSL证书错误,*生产环境绝对禁止使用*
    QSslSocket::ignoreSslErrors();

    QQmlApplicationEngine engine;
    engine.load(u"qrc:/你的主QML文件路径.qml"_qs);
    return app.exec();
}

无C++工程直接用qml命令运行的处理方式

如果你只是用qml命令直接运行测试脚本,不需要打包应用,可以直接将自签名证书导入操作系统的信任根证书列表:

  • Windows:双击证书文件,选择安装证书,存储位置选「本地计算机」,导入到「受信任的根证书颁发机构」存储区
  • macOS:双击证书文件打开钥匙串访问,找到对应证书右键选「显示简介」,在信任设置中将「使用此证书时」修改为「始终信任」
  • Linux:将证书文件复制到/usr/local/share/ca-certificates/目录,执行sudo update-ca-certificates命令生效

系统信任证书后,Qt 网络模块会自动读取系统信任证书列表,你的测试代码即可正常请求接口。

内容的提问来源于stack exchange,提问作者jimav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:04