Предварительная проверка для подписанного URL-адреса Google Cloud Storage, не возвращающего заголовки ответа CORS - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь выполнить подписанную возобновляемую загрузку в GCS . Наш веб-интерфейс работает против ограничений CORS на первоначальный запрос: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Заголовки ответа не показывают заголовков CORS:

alt-svc: quic=":443"; ma=2592000; v="44,43,39,35" cache-control: private, max-age=0 content-length: 0 content-type: text/html; charset=UTF-8 date: Tue, 13 Nov 2018 20:28:32 GMT expires: Tue, 13 Nov 2018 20:28:32 GMT server: UploadServer status: 200 x-guploader-uploadid: AEnB2Ups1tKbTbhPmsjrPXbIuIUyQt135AlSJ1n7-7XTwMrtQ2vUvn1WwpX3a_iusfmsXHaufdf5B3H2PzmDONs2wW7tKkLarYoxrVyWalhaX6FzGQPoRW0

Отладка, я отправил запрос curl, имитирующий запрос нашего интерфейса:

curl -H "Access-Control-Request-Headers: content-type,x-goog-resumable" \ -H "Access-Control-Request-Method: POST" \ -H "Origin: https://www.example.com" \ -X OPTIONS -I https://storage.googleapis.com/bucket/...

Опять же, ответ не содержит заголовков ответа CORS:

HTTP/2 200 x-guploader-uploadid: AEnB2UqwKiRSJjHjF9mzsZRMODdQmF6xhUAhdeEenuD0_WXmxpVA6n0i_HWY2NOJxvXS2t_I4IoFW_yvz6lssMz_HVmvlswL5NilGC3wE2YT0-L9aD7Pf1Q date: Tue, 13 Nov 2018 21:39:53 GMT expires: Tue, 13 Nov 2018 21:39:53 GMT cache-control: private, max-age=0 content-length: 0 server: UploadServer content-type: text/html; charset=UTF-8 alt-svc: quic=":443"; ma=2592000; v="44,43,39,35"

Я установил настройки CORS для моего сегмента с помощью gsutil cors set cors.json gs://bucket, где cors.json содержит [{"maxAgeSeconds": 3600, "method": ["GET", "POST", "PUT", "OPTIONS"], "origin": ["*"]}]

Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 15 ноября 2018

Я нашел решение. Мне пришлось добавить x-goog-resumable в список заголовков ответов.

Мой файл CORS

[
    {
      "origin": ["*"],
      "responseHeader": [
        "Content-Type",
        "Access-Control-Allow-Origin",
        "x-goog-resumable"],
      "method": ["GET", "HEAD", "DELETE", "POST", "OPTIONS"],
      "maxAgeSeconds": 3600
    }
]

По крайней мере предполёт начал работать

...