Конфигурация CORS для хранилища Google Cloud не устанавливается с помощью клиента Python - PullRequest
0 голосов
/ 25 мая 2018

Конфигурация CORS для хранилища облачных хранилищ не устанавливается с помощью python.

Я выполняю шаги, указанные в: http://google -cloud-python.readthedocs.io / en / latest / storage/buckets.html#google.cloud.storage.bucket.Bucket.cors

То есть

>>> policies = bucket.cors
>>> policies.append({'origin': '/foo', ...})
>>> policies[1]['maxAgeSeconds'] = 3600
>>> del policies[0]
>>> bucket.cors = policies
>>> bucket.update()

Если я получу конфигурацию CORS для корзины после выполнения вышеуказанных шагов, это дает пустой список.

1 Ответ

0 голосов
/ 29 мая 2018

bucket.cors является отображением последовательности каждой политики CORS .

Поскольку вы не делились информацией о том, как именно обновляете свои записи CORS, я предполагаю, что вы передаетесловарь нескольких пар ключ-значение для добавления.Это происходит автоматически, поскольку не соответствует ожидаемой схеме для записей политики.

Вместо этого напишите

import os
os.environ.update(
    {'GOOGLE_APPLICATION_CREDENTIALS': '<path-to-your-key-file>'}
)

import google.cloud.storage

storage_client = google.cloud.storage.Client()

bucket_name = '<your-bucket-name>'
bucket = storage_client.get_bucket(bucket_name)

policies = bucket.cors
policies.extend([
    {'origin': ['http://hello-world.example']},
    {'maxAgeSeconds': 3600}
])
bucket.cors = policies
bucket.update()
print(bucket.cors)

Обратите внимание, что источник - это список источников для получения заголовков ответа CORS, как описано в Хранение веб-документа JSON API .Другие политики также должны передаваться с правильным типом значения.

Вы также можете добавить каждую политику по отдельности следующим образом:

...
policies.append(
    {'origin': ['http://hello-world.example']},
)
policies.append(
    {'maxAgeSeconds': 3600}
)
...