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

Python requests get方法params参数未拼接查询字符串问题

问题根因

requests默认会自动跟随HTTP重定向,2.27.0之前的旧版本requests在处理GET请求的重定向逻辑时,会直接丢弃原请求传入的params查询参数,不会将参数追加到重定向后的目标地址上。
你的代码中访问https://bitmex.com/api/v1/user/margin时,实际触发了bitmex站点的域名重定向(从无www的根域名跳转到带www的https://www.bitmex.com域名),重定向过程中传入的{'currency': 'all'}参数被直接丢弃,所以最终看到的请求URL没有带查询串。
你测试的google.com地址没有触发会丢参数的重定向流程,因此params可以正常拼接,表现符合预期。

解决方案
  • 直接使用重定向后的最终域名发起请求,从源头避开重定向流程,将请求URL替换为https://www.bitmex.com/api/v1/user/margin即可,params会正常拼接到URL上。
  • 升级requests库到2.27.0及以上版本,新版本已经修复了GET请求重定向时丢弃查询参数的bug。
  • 若需要兼容旧版本requests,可在请求时传入allow_redirects=False关闭自动重定向,手动从响应头的Location字段获取重定向地址,自行拼接查询参数后再发起二次请求。
验证代码
import requests
# 直接使用重定向后的域名请求
r = requests.get('https://www.bitmex.com/api/v1/user/margin', params={'currency': 'all'})
print(r.request.url)
# 输出结果:https://www.bitmex.com/api/v1/user/margin?currency=all

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:30:54