HTTP-API RabbitMQ, возвращающий 401 (неавторизовано) - PullRequest
1 голос
/ 24 февраля 2020

Используя RabbitMQ localhost и пытаясь использовать его API .. когда я звоню от почтальона, все работает нормально.

enter image description here

Но я пытаюсь используйте этот 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 http://localhost: 15672 / api / queues /% 2F / QA.MOBILE / get net :: ERR_ABORTED 401 (не авторизован)

Я что-то упустил?

спасибо

1 Ответ

0 голосов
/ 26 апреля 2020

У меня была эта проблема. Несмотря на то, что моя проблема не была связана с CORS, я решил документировать эту проблему здесь на тот случай, если у будущих читателей возникнет та же проблема.

Моя проблема заключалась в том, что я неправильно вводил учетные данные пользователя. Из браузера вы можете просто вызвать любую из конечных точек API RabbitMQ следующим образом:

http://somename:somepassword@servername: 15672 / api / cluster-name

Но когда вы вызываете его программно, вам нужно удалить учетные данные из URL-адреса и использовать вместо них 64 базы.

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, et c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...