Сбой загрузки файлов API-интерфейса AdonisJS из-за CORS - PullRequest
0 голосов
/ 29 мая 2018

Я использую Docker Compose для вызова двух контейнеров Docker:

  1. Stock nginx контейнер, запускающий приложение WebPacked Vue.js и прослушивающий порт 9090.
  2. Stock node контейнер, работающий npm start внутри проекта AdonisJS и прослушивающий порт 3333.

Цель - использовать AJAX для загрузки файла из http://website.com:9090 в http://website.com:3333, а затем отправить обратноответ успехаЛокально в разработке, CORS не проблема, и все запросы в порядке.Тем не менее, при развертывании в «производство» (или планирование производства) я получаю следующую ошибку в консоли JS в Firefox:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://lemcoe.nato:3333/uploader. (Reason: CORS request did not succeed).

Глядя на вкладку Сеть в Firefox, ясм. и OPTIONS, и POST (запрос, который фактически загружает файл).Запрос OPTIONS, по-видимому, успешен, и это заголовки запроса и ответа на этот запрос: (lemcoe.nato локально указывает на website.com с использованием DNS, на этом рисунке)

CORS issue with AdonisJS

Тем не менее, загрузка файла фактически никогда не происходит.Вот заголовки запроса POST, который никогда не получал ответ:

Unsuccessful POST request's headers.

Вот файл конфигурации config/cors.js AdonisJS:

module.exports = {
    origin: '*',
    methods: ['GET', 'HEAD', 'PUT', 'PATCH', 'POST', 'DELETE'],
    headers: true,
    exposeHeaders: false,
    credentials: false,
    maxAge: 90
}

Я перепробовал каждую комбинацию этих настроек, и могу сделать все возможное, чтобы все порты правильно отображались в Docker.Тем не менее, все веб-браузеры отображают ошибку CORS при попытке загрузки файла в внутренний контейнер.

С чего начать, чтобы устранить эту проблему?Я считаю, что ответ проекта на первоначальный запрос OPTIONS является удовлетворительным, но я должен что-то упустить, когда дело доходит до второго этапа этого процесса.Что мне показалось интересным, так это то, что когда один и тот же точный код запускается локально на тех же портах, но без Docker, все работает, как ожидалось, и CORS никогда не упоминается в консоли.Только когда два проекта изолированы на одном хосте Docker (с одинаковыми портами и доменами) проблема CORS становится проблемой.

Спасибо!

...