Я использую Docker Compose для вызова двух контейнеров Docker:
- Stock
nginx
контейнер, запускающий приложение WebPacked Vue.js и прослушивающий порт 9090. - 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](https://i.stack.imgur.com/mkduA.png)
Тем не менее, загрузка файла фактически никогда не происходит.Вот заголовки запроса POST, который никогда не получал ответ:
Вот файл конфигурации 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 становится проблемой.
Спасибо!