403 (Запрещено) при использовании Ocelot с docker -композицией и asp. net core - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь использовать Ocelot для перенаправления запроса из веб-приложения, использующего HttpClient, на Asp. Net Базовый WebAPI, работающий в Docker. Оцелот также работает в контейнере. Оба контейнера (ProductManagementAPI и Ocelot) создаются с использованием docker -compose.

Ниже представлен мой ocelot. json file:

"ReRoutes": [
    {
      "DownstreamPathTemplate": "/api/product/product",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "productmanagementapi",
          "Port": "8100"
        }
      ],
      "UpstreamPathTemplate": "/product/product",
      "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete", "Options" ],
      "Priority": 1
    }
  ],
  "GlobalConfiguration": {
  }

После запуска "docker -compose Команда «вверх», когда я непосредственно просматриваю: http://localhost: 8100 / api / product / product , я получаю желаемый ответ.

Но когда я делаю запрос из Webapp, работающего локально, чтобы получить В ответ на API, работающий в контейнере через шлюз Ocelot Api (также работающий в контейнере), я получаю следующую ошибку:

ocelotapigateway_1 | requestId: 0HLTAOJJEL03J: 00000001, previousRequestId: нет идентификатора предыдущего запроса, сообщение: 403 (Запрещено) код состояния, uri запроса: http://productmanagementapi: 8100 / api / product / product

Даже если я заменю хост Downstream в файле ocelot. json на «localhost», я получаю сообщение об ошибке.

Я не включил авторизацию ни в одном из вышеуказанных приложений.

Когда Я напрямую вызываю WebAPI, работающий в docker, используя HttpClient из WebApplication, он работает. Но при размещении шлюза Ocelot между ними он перестает работать.

...