Настройка CORS для Firebase Storage

Когда веб-приложение выложено на свой домен, а файлы лежат в бакете Firebase Storage, это два разных источника. Браузер по умолчанию блокирует такие запросы.

CORS (Cross-Origin Resource Sharing) — механизм, которым сервер сообщает браузеру, каким источникам он разрешает обращаться к своим ресурсам. Настроив CORS для бакета, вы разрешаете своему сайту читать из него файлы.

  1. Откройте консоль Google Cloud.

  2. Запустите Cloud Shell. Нажмите иконку Activate Cloud Shell справа сверху.

    Кнопка запуска Cloud Shell

    Дождитесь загрузки терминала.

    Терминал Cloud Shell

  3. Выберите проект:

    gcloud config set project your-firebase-project-id;
  4. Опишите и загрузите файл cors.json.

    В нём перечислены источники, которым разрешён доступ. Источник — это домен с портом:

    "origins": ["https://www.example.com"]

    Можно ограничить и список заголовков:

    "origins": ["https://www.example.com"], "allowedHeaders": ["Content-Type", "Authorization"]

    Чтобы разрешить чтение всем, но запретить изменение, подойдёт такой файл:

    [
        {
            "origin": ["*"],
            "method": ["GET"],
            "maxAgeSeconds": 3600
        }
    ]

    Готовый файл загрузите в Cloud Shell.

    Загрузка файла в Cloud Shell

    Команда ls покажет, что cors.json действительно на месте.

  5. Примените правила:

    gcloud storage buckets update gs://your-google-storage-bucket-name --cors-file=cors.json
  6. Проверьте результат:

    gcloud storage buckets describe gs://your-google-storage-bucket-name --format="default(cors_config)"

    В выводе должны быть те же источники и настройки, что и в вашем файле.

Подробности — в документации Firebase про CORS.

перевод официальной документации FlutterFlow

обновлено

ESC