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

Rswag中Authorization header出现在查询参数的问题求助

解决Rswag中Authorization请求头被转为查询参数的问题

环境版本

  • rswag (2.0.5)
  • rspec (3.8.0)
  • Rails 5.2.3
  • Ruby 2.4.5

问题背景

我第一次用Rswag配置JWT认证时,卡在了Authorization header的设置上,折腾了整整一天。我的操作步骤是这样的:

  1. 在spec/swagger_helper.rb里配置swagger文档,定义了JWT类型的securityDefinitions,指定Authorization放在请求头里;
  2. 在spec/integration/api/v1/nodes_spec.rb中编写/api/v1/nodes的GET接口测试,配置了security规则、查询参数,响应部分也设置了Authorization为Bearer格式的JWT。

预期vs实际结果

  • 预期:Bearer令牌被正确放入Authorization请求头中
  • 实际:查看测试日志发现,Authorization和Accept头竟然被放到了查询参数里!这导致后端代码无法从请求头获取JWT,直接报错No JWT token included in request。后来尝试直接定义header类型的Authorization参数,依然没用。

排查过程

一开始我以为是Rswag的配置问题,反复核对了swagger_helper和测试文件的写法都没问题。后来我新建了一个只包含rspec和rswag的Rails 5 API项目测试,结果完全正常,这说明问题大概率出在现有项目的gem冲突或者额外配置上。

经过逐一排查,我发现罪魁祸首是引入了Rack::Test::Methods!

解决方案

移除测试helper文件中(比如spec/support/xxx_helper.rb或者直接在测试文件里)的include Rack::Test::Methods语句,问题直接解决,Authorization头终于能正常出现在请求头里了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:03:21