@historydev
Острая аллергия на анимешников

Как исправить cors ошибку при общении двух контейнеров?

Деплою приложение через докер на debian 11, прокси через nginx:
server {
    listen 80;
    listen [::]:80;

    root /usr/share/nginx/html/dist/frontend; # Этой папки уже нет, нужно ли оно вообще?
    index index.html index.htm;

    server_name my-domain.ru www.my-domain.ru;

    location / {
        rewrite /(.*) /$1  break;
        proxy_pass                              http://127.0.0.1:4200;
        proxy_pass_header                       Server;
        proxy_set_header Host                   $host;
        proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP              $remote_addr;
        client_max_body_size 5000m;
    }

    location @proxy {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;

        proxy_pass http://my-domain.ru;
        proxy_redirect off;
    }
















}


На ноде использую cors:

const HOST = process.env.HOST; // === DEV: http://localhost:4200 - работает, PROD: http://my-domain.ru - не работает, уточню, на этом сервере не подключен https
app.use(cors({
		origin: [HOST],
		exposedHeaders: ['Authentication']
	}));


Получаю ошибку не просто что cors не пускает, а контекста:

Access to XMLHttpRequest at 'localhost:4000/socket.io/?EIO=4&transport=polling&...' from origin 'my-domain.ru' has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space `local`.


Приложение запускается через compose:
version: '3.6'
# Deploys MongoDB with customization scripts and container with Mongo client
# https://fabianlee.org/2018/05/20/docker-using-docker-compose-to-link-a-mongodb-server-and-client/
#
# usage:
# sudo docker-compose build
# sudo docker-compose up


services:
  my-mongodb:
    image: 23065a99dd4d
    container_name: my-mongodb
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_DATABASE=you_need
      - MONGO_INITDB_ROOT_USERNAME=
      - MONGO_INITDB_ROOT_PASSWORD=
    volumes:
      # seeding scripts
      - ./mongo-entrypoint:/docker-entrypoint-initdb.d
      # named volumes
      - mongodb:/data/db
      - mongoconfig:/data/configdb
    networks:
      - test

  my-mongoclient:
    # build will get tagged with 'image'
    image: 51168326ea2c
    container_name: my-mongoclient
    ports:
      - 4200:4200
    command: node dist/static_hoster/static.js
    networks:
      - test

  my-mongoserver:
    # build will get tagged with 'image'
    image: 51168326ea2c
    container_name: my-mongoserver
    ports:
      - 4000:4000
    command: node dist/backend/server.js
    networks:
      - test
    depends_on:
      - my-mongodb

volumes:
  # default dir on Ubuntu: /var/lib/docker/volumes
  mongodb:
  mongoconfig:

networks:
  test:
    driver: bridge


Как это можно исправить?
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
Viji
@Viji
Associate DevOps Engineer
Добавьте после server name в nginx строку

add_header Access-Control-Allow-Origin localhost;

или, если не сработало

add_header Access-Control-Allow-Origin *;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы