Configure e veja as configurações de CORS

Vista geral Exemplos de configuração

A partilha de recursos de origem cruzada (CORS) permite interações entre recursos de diferentes origens, algo que é normalmente proibido para evitar comportamentos maliciosos. Use esta página para saber como definir uma configuração CORS num contentor do Cloud Storage e como ver a configuração CORS definida num contentor. Consulte os Exemplos de configuração para CORS para ver exemplos de configurações de CORS.

Funções necessárias

Para receber as autorizações necessárias para definir e ver a configuração de CORS num contentor, peça ao seu administrador para lhe conceder a função de administrador do armazenamento (roles/storage.admin) no contentor.

Esta função predefinida contém as autorizações necessárias para definir e ver as configurações de CORS. Para ver as autorizações exatas necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

  • storage.buckets.get
  • storage.buckets.update

Também pode obter estas autorizações com outras funções predefinidas ou funções personalizadas.

Para obter informações sobre como conceder funções em contentores, consulte o artigo Defina e faça a gestão de políticas de IAM em contentores.

Defina a configuração de CORS num contentor

Define uma configuração de CORS num contentor especificando informações, como métodos HTTP e domínios de origem, que identificam os tipos de pedidos que o contentor pode aceitar.

Siga estes passos para definir uma configuração CORS no seu contentor:

Consola

Não pode gerir o CORS através da consola do Google Cloud . Em alternativa, use a CLI gcloud.

Linha de comandos

  1. Crie um ficheiro JSON com a configuração CORS que quer aplicar. Consulte exemplos de configuração para ver ficheiros JSON de exemplo.

  2. Use o comando gcloud storage buckets update com a flag --cors-file:

    gcloud storage buckets update gs://BUCKET_NAME --cors-file=CORS_CONFIG_FILE

    Onde:

    • BUCKET_NAME é o nome do contentor relevante. Por exemplo, my-bucket.
    • CORS_CONFIG_FILE é o caminho para o ficheiro JSON que criou no passo 1.

Bibliotecas cliente

C++

Para mais informações, consulte a documentação de referência da API C++ Cloud Storage.

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

O exemplo seguinte define uma configuração de CORS num contentor:

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name,
   std::string const& origin) {
  StatusOr<gcs::BucketMetadata> original =
      client.GetBucketMetadata(bucket_name);

  if (!original) throw std::move(original).status();
  std::vector<gcs::CorsEntry> cors_configuration;
  cors_configuration.emplace_back(
      gcs::CorsEntry{3600, {"GET"}, {origin}, {"Content-Type"}});

  StatusOr<gcs::BucketMetadata> patched = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetCors(cors_configuration),
      gcs::IfMetagenerationMatch(original->metageneration()));
  if (!patched) throw std::move(patched).status();

  if (patched->cors().empty()) {
    std::cout << "Cors configuration is not set for bucket "
              << patched->name() << "\n";
    return;
  }

  std::cout << "Cors configuration successfully set for bucket "
            << patched->name() << "\nNew cors configuration: ";
  for (auto const& cors_entry : patched->cors()) {
    std::cout << "\n  " << cors_entry << "\n";
  }
}

C#

Para mais informações, consulte a documentação de referência da API C# Cloud Storage.

Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

O exemplo seguinte define uma configuração de CORS num contentor:


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;
using System.Collections.Generic;
using static Google.Apis.Storage.v1.Data.Bucket;

public class BucketAddCorsConfigurationSample
{
    public Bucket BucketAddCorsConfiguration(string bucketName = "your-bucket-name")
    {
        var storage = StorageClient.Create();
        var bucket = storage.GetBucket(bucketName);

        CorsData corsData = new CorsData
        {
            Origin = new string[] { "*" },
            ResponseHeader = new string[] { "Content-Type", "x-goog-resumable" },
            Method = new string[] { "PUT", "POST" },
            MaxAgeSeconds = 3600 //One Hour
        };

        if (bucket.Cors == null)
        {
            bucket.Cors = new List<CorsData>();
        }
        bucket.Cors.