Можно ли использовать URL загрузки из GCS в JavaScript? - PullRequest
0 голосов
/ 24 июня 2019

Этот новый вопрос только потому, что мой старый вопрос был закрыт. Так что я даже не могу ответить.

Выборка Javascript с использованием URL для загрузки из GCS

Я редко попадаю в ситуацию, когда мне приходится рассматривать CORS, поэтому я об этом забываю. Но вот что происходит.

  1. Я получаю URL-адрес для загрузки файла в GCS, используя fileRef.getDownloadURL().

  2. Этот URL работает при открытии его на вкладке Chrome.

  3. Однако попытка использовать JavaScript fetch не удалась из-за (плохого) CORS.

  4. В принципе это можно вылечить с помощью gsutil cors set ... (см. Вопрос выше).

  5. Однако, поскольку я использую тестовую среду (firebase serve, localhost), представляется невозможным установить значение для источника в заголовке запроса, которое принимается gsutil.

Так что если кто-то знает решение для 5 выше, я был бы благодарен. (Конечно, я могу использовать обходной путь, но я бы предпочел нет.)

Кстати, я пытался использовать предлагаемый прокси-сервер, но здесь он заблокирован.


РЕДАКТИРОВАТЬ: Я также подал отчет об ошибке в Google. Но было бы неплохо, если бы я ошибался, и это не было ошибкой во взаимодействии между локальным тестированием Firebase и GCS.

1 Ответ

0 голосов
/ 25 июня 2019

Ваш вопрос: как извлечь контент из GCS, используя скрипт Javascript со стороны клиента.

Вопрос дубликат, поскольку на него уже был дан ответ здесь . Пожалуйста, найдите время, чтобы действительно прочитать ответы, и вы увидите, что это та же проблема, с которой вы столкнулись. У вас есть альтернатива, которую вы можете использовать, не изменяя политику Cors в ведре или выбирая ее со стороны сервера:

  1. Использование прокси-сервера Heroku (я пробовал использовать онлайн-демонстрацию , и у меня это сработало)

Примечания:

  • Реализация этого решения показана на вопросе, на который я ссылаюсь в начале, вместе с их объяснением.
  • Убедитесь, что объект, к которому вы пытаетесь получить доступ, является общедоступным.
  • Вы также можете использовать "{mode: 'no-cors'}", и он будет извлекать содержимое, но вы не сможете получить к нему доступ через клиентский скрипт, поскольку ответ будет "непрозрачным".
...