RabbitMQ通过管理HTTP API发布未经授权,但可在Web UI中工作

RabbitMQ通过管理HTTP API发布未经授权,但可在Web UI中工作,rabbitmq,Rabbitmq,我试图通过HTTP管理API将消息发布到默认exchange和其他一些exchange,但总是返回授权错误 curl -i -u myuser:mypw -XPOST -d'{"properties":{},"routing_key":"my_key","payload":"my body","payload_encoding":"string"}' https://myinstance.rmq.cloudamqp.com/api/exchanges/vhost/myvhost/publish

我试图通过HTTP管理API将消息发布到默认exchange和其他一些exchange,但总是返回授权错误

curl -i -u myuser:mypw -XPOST -d'{"properties":{},"routing_key":"my_key","payload":"my body","payload_encoding":"string"}' https://myinstance.rmq.cloudamqp.com/api/exchanges/vhost/myvhost/publish
我在自托管RabbitMQ(通过k8s上的helm安装)和CloudAMQP实例上都进行了尝试

但是,如果我与同一个用户登录管理Web UI,那么我可以向exchange发布消息,也可以从队列中使用消息。 我希望管理Web UI只使用HTTP API来执行此操作,因此我不明白为什么通过UI执行此操作时它会起作用

另一方面,读取所有vhost也适用于HTTP API

curl -i -u myuser:mypw https://myinstance.rmq.cloudamqp.com/api/vhosts

有人能给我解释一下那里发生了什么事吗?最让我困惑的是,它使用同一个用户在UI上工作:pw。

我发现了问题,我使用了错误的URL路径

对于vhost:
/
和默认的exchange,它应该是:
http://myinstance.rmq.cloudamqp.com/api/exchanges/%2F/amq.default/publish

在我的情况下,使用cloudamqp免费计划,我需要使用我的用户名作为URL中的vhost:

curl -i -u myuser:mypw https://myinstance.rmq.cloudamqp.com/api/vhosts
HTTP/1.1 200 OK