Возобновляемая загрузка Google Storage завершается с ошибкой CORS - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь:

  1. создать на стороне сервера возобновляемый URL-адрес для загрузки с использованием XML API или JSON API -> URL сгенерирован правильно и может использоваться
  2. верните этот URL-адрес в браузер и принудительно загрузите файл на этот URL-адрес с помощью JavaScript / jQuery.
  3. При выполнении вызова выполняется запрос CORS:

a) сначала предварительная проверказапрос отправляется и возвращается ответ 200, который включает заголовок: access-control-allow-origin с правильным именем хоста

b) затем запрос на загрузку отправляется в хранилище Google, загрузка выполняется корректно иполучить ответ (например, включая JSON с деталями загрузки).

НО ответ не включает заголовок: access-control-allow-origin, и из-за этого браузер жалуется: Cross-Origin Request Blocked: Та же политика происхождения запрещает чтение удаленного ресурса на https://www.googleapis.com/upload/storage/v1/b/test-bucket/o?uploadType=resumable&upload_id=AEnB2UoTmA9ul. (причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin').

Для решения этой проблемы некоторые статьифайлы предлагают:

  • отправлять в качестве заголовка «Origin» при создании URL возобновляемой загрузки местоположение клиента, который будет выполнять реальную загрузку.Я сделал это для JSON API и XML API.Но все тот же
  • для настройки корзины на прием запросов CORS -> это моя конфигурация CORS корзины: [{"method": ["PUT", "GET", "OPTIONS"], "origin":["*"]}]

1 Ответ

0 голосов
/ 26 марта 2019

Да, я решил это - проблема была в том, что Java не позволяет отправлять / устанавливать заголовок Origin с пользовательским значением.Таким образом, даже если я установил значение Origin - оно не было отправлено.

Для его решения необходимо настроить sun.net.http.allowRestrictedHeaders = true при запуске процесса Java.

...