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

如何使用Rust ureq库发送登录POST请求并保留会话Cookie

问题原因

  • 参数传递逻辑不匹配:你Python版本通过data参数将登录信息作为POST表单体提交,而Rust版本调用.query()方法是将参数拼接到URL查询字符串中,后端没有读取到正确的登录参数,自然不会返回会话Cookie。
  • 你的Python示例代码存在笔误:你创建了Session实例却用全局req.post发请求,实际运行时不会保存Cookie,正确写法应为session.post。

解决方法

ureq的Agent默认自带Cookie管理能力,只要全程复用同一个Agent实例,就会自动处理服务端返回的Set-Cookie响应头,后续请求自动携带对应Cookie。你只需要把参数传递方式改成提交表单即可,参考代码如下:

use ureq::Agent;
use std::collections::HashMap;

fn main() {
    // 全局复用同一个agent实例
    let agent = Agent::new();
    
    // 构造POST表单参数
    let mut login_form = HashMap::new();
    login_form.insert("procedure", "login");
    login_form.insert("username", "JohnSmith");
    login_form.insert("password", "hunter7");
    
    // 提交表单发起登录请求
    agent.post("somesite.com")
        .send_form(&login_form)
        .unwrap();
    
    // 后续接口调用都用同一个agent,会自动携带登录Cookie
    let api_resp = agent.get("somesite.com/your_target_api").call().unwrap();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:03