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

如何在Mechanize的GET方法请求头中传递Cookie?

解决Mechanize中POST后GET请求自动携带Cookie的问题

你的问题出在手动传递Cookie请求头是多余且错误的,Mechanize的Agent对象会自动管理CookieJar,POST请求后获得的Cookie会被自动保存,后续用同一个Agent发起GET请求时会自动携带所需Cookie。

你的代码问题分析

你在mechanize_call方法里手动构造Cookie请求头,但@cookie_val是Mechanize的Cookie对象,不是符合HTTP格式的字符串,而且这种方式会绕过Agent的Cookie管理机制,导致Cookie无法正确传递。

正确的实现方式

只需要确保使用同一个Mechanize Agent执行POST和GET请求,Agent会自动处理Cookie的保存和携带:

# 初始化Mechanize Agent(建议在类初始化或方法开头完成)
@agent = Mechanize.new

def get_body_2
  { "ctl00$Content$ddSpecialization" => "Appellate Practice" }
end

def post_request
  url = 'https://portal.ncbar.gov/verification/search.aspx'
  body = get_body_2
  # 执行POST请求,Agent自动将返回的Cookie存入CookieJar
  @agent.post(url, body)
end

def mechanize_call
  url = 'https://portal.ncbar.gov/Verification/results.aspx'
  # 直接用同一个Agent发起GET请求,自动携带之前POST获取的Cookie
  page = @agent.get(url)
  # 此处可直接处理结果页面数据,比如打印页面内容
  puts page.body
end

# 按顺序调用:先执行POST获取Cookie,再发起GET请求
post_request
mechanize_call

额外说明

  • 若要查看当前Agent保存的所有Cookie,可使用@agent.cookies命令查看Cookie对象列表
  • 若遇到Cookie未自动携带的情况,检查Cookie的domain、path属性是否与GET请求的URL匹配,Mechanize只会发送符合匹配规则的Cookie

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:25:34