Загрузка в Google Cloud Storage с использованием возвращенного подписанного URL-адреса запрещена только в Safari - PullRequest
0 голосов
/ 05 февраля 2020

Использование библиотеки Node.js для создания подписанного URL и без проблем выгрузки файлов из Chrome на локальный компьютер и в производство. Но проблема CORS появляется при отправке запроса PUT от Safari, как на рабочем столе (v13.0.5), так и iOS, поэтому пока нет проблем с Chrome на Ma c. Там написано Origin https://website.com is not allowed by Acess-Control-Allow-Origin

Я почти уверен, что это связано с тем, что Safari отправляет запрос. Я дважды проверил мой API, чтобы сгенерировать URL, в котором есть все нужные параметры (соответствующий тип контента с клиентом), и он также работает на Chrome. Запрос PUT отправляется с использованием fetch().

. Попытался обновить конфигурацию CCS GCS с помощью gsutil , но сафари по-прежнему жаловаться, что источник не разрешен, даже сейчас он не работает на Chrome без подстановочный знак на origin и responseHeader. Кто-то упоминал в inte rnet Chrome нормально с подстановочными знаками, но Safari ожидает, что заголовки / происхождение будут явными, но не может выяснить, какие заголовки требуются. Пробовали различные варианты для responseHeader, такие как Acess-Control-Allow-Origin , origin , Origin , x-goog-resumable .

[
    {
      "origin": ["https://website.com"],
      "responseHeader": ["Content-Length", "Content-Type", "Date", "Server", "Transfer-Encoding", "X-GUploader-UploadID", "X-Google-Trace"],
      "method": ["GET", "HEAD", "POST", "PUT"],
      "maxAgeSeconds": 3000
    }
]

У меня есть другой проект, который запускает ту же настройку и не имеет проблем, единственное отличие, вероятно, версия @google-cloud/storage npm и использование version: 'v4' при генерации getSignedUrl().

На inte rnet найдены несколько слов, говорящих об использовании https://bucket.storage.googleapis вместо https://storage.googleapis/bucket, но безрезультатно.

...