Запросы на выборку направляются на локальный базовый URL - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь получить данные с моего веб-клиента (express -сервер) из моего бэкэнд-сервиса (также express -сервер). Локально это работает нормально, используя переменные окружения для установки backend-service-url. Но развернутый на AWS, он не позволит мне получить доступ от моего веб-клиента EC2 к моему внутреннему EC2.

Я регистрирую свою переменную среды для backend-службы (взято из AWS SSM Paramter Store), и она записывает правильный URL-адрес службы для моего экземпляра EC2 бэкэнда.

Но тогда происходит сбой, потому что он вызывает «GET host-url / service-url / endpoint» вместо «GET service-url / endpoint». Не знаю, если это проблема AWS или node.js / express.

Вот как я называю свой бэкэнд:

async function callEndpoint(endpointUrl) {
    console.log("Fetching to: " + endpointUrl)
    const response = await fetch(endpointUrl, {
        method: 'GET',
    });

    let data = await response.json();
    return data;

console.log выводит на экран правильное значение, но fetch, тем не менее, делает (я предполагаю, но не понимаю почему) его относительным путем, добавляя префикс host-url из моего внешнего интерфейса EC2 IP / DNS.

Не знаю насколько это актуально, но мои серверы, работающие в Docker контейнерах в кластере ECS (каждый контейнер имеет свой собственный экземпляр EC2).

1 Ответ

1 голос
/ 31 января 2020

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

fetch("external-service.domain.com/endpoint")

переводится в

fetch("https://hostname/external-service.domain.com/endpoint")

Попробуйте добавить https:// или соответствующую схему к вашему URL.

Подробнее: https://url.spec.whatwg.org/#url -описание

...