You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

reqwest 0.13.2版本创建不安全客户端失败求助(原0.12.28可用)

解决reqwest 0.13.2创建不安全客户端失效的问题

核心原因与修复步骤

reqwest 0.13版本在TLS配置的特性依赖和部分API细节上有调整,导致原0.12.x的写法可能失效,以下是针对性修复方案:

1. 确认Cargo.toml的特性依赖

首先确保你在Cargo.toml中启用了正确的TLS后端特性,reqwest 0.13默认不包含TLS支持,必须显式声明:

# 使用rustls作为TLS后端(推荐)
reqwest = { version = "0.13.2", features = ["rustls-tls"] }

# 或者使用系统原生TLS后端
# reqwest = { version = "0.13.2", features = ["native-tls"] }

2. 正确构建不安全客户端

基础写法(兼容大多数场景)

直接使用danger_accept_invalid_certs方法,这是最简洁的方式,与0.12.x的核心写法一致,但需确保特性依赖正确:

use reqwest::Client;

fn get_insecure_client() -> Result<Client, reqwest::Error> {
    let client = Client::builder()
        // 接受无效证书(包括自签名、过期等)
        .danger_accept_invalid_certs(true)
        // 若需忽略主机名不匹配,添加此行
        .danger_accept_invalid_hostnames(true)
        .build()?;
    Ok(client)
}

自定义TLS配置(针对复杂场景)

如果上述写法无效,可能是你自定义了TLS配置,此时需要手动指定证书验证器:

use reqwest::Client;
use rustls::ClientConfig;
use std::sync::Arc;

fn build_insecure_client_rustls() -> Result<Client, reqwest::Error> {
    // 创建不做证书验证的rustls配置
    let mut tls_config = ClientConfig::builder()
        .with_safe_defaults()
        .with_custom_certificate_verifier(Arc::new(reqwest::tls::NoCertificateVerification))
        .with_no_client_auth();

    let client = Client::builder()
        .use_rustls_tls()
        .tls_config(tls_config)?
        .build()?;
    Ok(client)
}

常见排查点

  • 检查是否有其他代码覆盖了TLS配置(比如后续调用了tls_config方法覆盖了之前的设置)
  • 确认升级reqwest时没有遗漏相关依赖的更新(比如rustls或native-tls的版本兼容问题)

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

火山引擎 最新活动