RabbitMQ HTTP API返回401(未经授权)

RabbitMQ HTTP API返回401(未经授权),rabbitmq,Rabbitmq,使用RabbitMQ localhost并尝试使用其API。。当我从邮递员那里打来电话时,工作很好 但我试图在我的应用程序代码中使用此API,我得到了401错误: const test = { count: 5, ackmode: 'ack_requeue_true', encoding: 'auto', truncate: 50000 } testPost() { fetch('http://localhost:15672/api/queues/%2F/QA.M

使用RabbitMQ localhost并尝试使用其API。。当我从邮递员那里打来电话时,工作很好

但我试图在我的应用程序代码中使用此API,我得到了401错误:

const test = {
  count: 5,
  ackmode: 'ack_requeue_true',
  encoding: 'auto',
  truncate: 50000
}

  testPost() {
    fetch('http://localhost:15672/api/queues/%2F/QA.MOBILE/get', {
      method: 'post',
      mode: 'no-cors',
      body: JSON.stringify(test),
      headers: {Authorization: 'Basic ' + btoa('guest:guest'), Accept: 'application/json', 'Content-Type': 'application/json'}
    });
  }
POST net::错误被中止401(未经授权)

我错过了什么


谢谢

我自己也有这个问题。即使我的问题与CORS无关,我想我会在这里记录这个问题,以防将来的读者也会遇到同样的问题

我的问题是我没有正确地建立64用户凭据的基础。从浏览器中,您可以这样调用任意一个:

但是,当以编程方式调用它时,您需要从url中删除凭据,并改为使用它们

using (var httpClient = new HttpClient())
{
    using (var request = new HttpRequestMessage(new HttpMethod("GET"), "http://servername:15672/api/cluster-name"))
    {
        var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes($"somename:somepassword"));
        request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}");

        var response = httpClient.SendAsync(request).Result;

        if (response.IsSuccessStatusCode == true)
        {
            string jsonContent = response.Content.ReadAsStringAsync().Result;
        }
    }
}

上面的代码是C#,但是对于Java等来说,它将是相同的过程。

我自己也遇到了这个问题。即使我的问题与CORS无关,我想我会在这里记录这个问题,以防将来的读者也会遇到同样的问题

我的问题是我没有正确地建立64用户凭据的基础。从浏览器中,您可以这样调用任意一个:

但是,当以编程方式调用它时,您需要从url中删除凭据,并改为使用它们

using (var httpClient = new HttpClient())
{
    using (var request = new HttpRequestMessage(new HttpMethod("GET"), "http://servername:15672/api/cluster-name"))
    {
        var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes($"somename:somepassword"));
        request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}");

        var response = httpClient.SendAsync(request).Result;

        if (response.IsSuccessStatusCode == true)
        {
            string jsonContent = response.Content.ReadAsStringAsync().Result;
        }
    }
}

上面的代码是C#,但对于Java等,它将是相同的过程。

我无法重现错误。我尝试使用
python
中的
请求
库。而且效果很好。确保你通过了正确的认证Hello@bumblebee我发现了问题。。我无法设置:模式:“无cors”在我的获取中。。我必须在advanced.config上添加此设置以允许CORS:[{rabbitmq_management,[{CORS_allow_origins,[“*”]}]}]。Than工作得很好:)谢谢,AlanI无法重现错误。我尝试使用
python
中的
请求
库。而且效果很好。确保你通过了正确的认证Hello@bumblebee我发现了问题。。我无法设置:模式:“无cors”在我的获取中。。我必须在advanced.config上添加此设置以允许CORS:[{rabbitmq_management,[{CORS_allow_origins,[“*”]}]}]。比做得好:)谢谢,艾伦