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

如何移除reqwest库的TLS依赖以执行GET/POST请求?

如何在reqwest中禁用所有TLS依赖?

要完全剔除reqwest的TLS相关依赖,核心操作是关闭默认特性,再手动启用你需要的非TLS功能特性,具体步骤如下:

1. 配置Cargo.toml依赖

reqwest的默认特性默认包含rustls-tls(基于rustls的TLS实现),所以第一步必须关掉默认特性,然后只添加你实际需要的功能(比如阻塞客户端、JSON处理、异步运行时支持等)。

示例配置:

[dependencies]
# 阻塞客户端 + JSON处理的配置
reqwest = { version = "0.11", default-features = false, features = ["blocking", "json"] }

# 如果用异步(基于tokio)的配置
# reqwest = { version = "0.11", default-features = false, features = ["tokio", "json"] }

# 如果用异步(基于async-std)的配置
# reqwest = { version = "0.11", default-features = false, features = ["async-std", "json"] }

这里的关键是default-features = false,它会剔除所有默认启用的TLS相关依赖;后面的features列表只保留你需要的非TLS功能,绝对不要添加任何带tls字样的特性(比如rustls-tls、native-tls等)。

2. 代码编写注意事项

因为没有TLS支持,你的代码只能处理HTTP协议的请求,HTTPS请求会直接失败。下面是一个阻塞客户端的GET请求示例:

use reqwest::blocking::Client;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();
    // 只能访问http开头的地址,https会报错
    let response = client.get("http://example.com")
        .send()?
        .text()?;
    
    println!("响应内容: {}", response);
    Ok(())
}

验证依赖是否干净

你可以运行cargo tree命令检查依赖树,确认输出中没有openssl、native-tls、rustls等TLS相关的包,这样就说明已经成功禁用了所有TLS依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:35:22