You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux下使用cURL请求RabbitMQ始终返回400错误请求

解决RabbitMQ API 400 Bad Request错误

看起来你在调用RabbitMQ的API获取通道信息时碰到了400错误,我帮你梳理下问题根源和修复方案:

最可能的问题:Accept请求头格式错误

你的cURL命令里的accept头写了/ ;,这明显不符合HTTP头的规范——正确的通配符应该是*/*,而且多余的分号会导致服务器无法正确解析这个请求头,这大概率就是触发400错误的原因。

修复步骤

1. 修正Accept头

把原来的错误Accept头:

-H 'accept:text/html,application/xhtml+xml,application/xml;q=0.9, / ;'

改成标准格式,如果你需要接受多种响应类型,可以用:

-H 'accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'

考虑到RabbitMQ API默认返回JSON,更简洁的写法是直接指定JSON类型:

-H 'accept:application/json'

2. 移除不必要的请求头

命令里的upgrade-insecure-requests: 1是给浏览器用的(用来自动升级HTTP请求到HTTPS),在cURL调用API时完全没必要,建议移除这个头,避免额外的解析问题。

3. 验证Authorization头(可选)

虽然400错误主要是格式问题,但你可以顺便验证下Basic auth的编码是否正确:执行echo "cGhpYWRtaW46MW5mME1AdDFjc1BoIWx0MHI=" | base64 -d,看看解码后的内容是不是username:password的格式,确保用户名密码没有编码错误。

修复后的完整cURL命令

curl -i -X GET https://192.168.180.23:15671/api/channels \
-H 'accept:application/json' \
-H 'accept-encoding: gzip, deflate' \
-H 'accept-language: en-US,en;q=0.9' \
-H 'authorization: Basic cGhpYWRtaW46MW5mME1AdDFjc1BoIWx0MHI=' \
-H 'connection: keep-alive' \
-k

补充说明

HTTP 400 Bad Request一般表示服务器无法理解你的请求格式,常见原因包括请求头语法错误、参数格式不对或者缺少必要字段。这次就是Accept头的语法错误直接导致了服务器拒绝处理请求。

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

火山引擎 最新活动