Compartilhamento de recursos entre origens (CORS, na sigla em inglês)

A política de mesma origem é uma política de segurança aplicada em aplicativos da Web do lado do cliente (como navegadores da Web) para evitar interações entre recursos de origens diferentes. Mesmo que ela seja útil para impedir comportamentos maliciosos, essa medida de segurança também impede interações legítimas entre origens conhecidas. Por exemplo, um script em uma página hospedada no App Engine em example.appspot.com pode precisar usar recursos armazenados em um intervalo do Cloud Storage em example.storage.googleapis.com. No entanto, como essas são duas origens diferentes da perspectiva do navegador, ele não permitirá que um script de example.appspot.com busque recursos em example.storage.googleapis.com.

A especificação do compartilhamento de recursos entre origens (CORS, na sigla em inglês) foi desenvolvida pelo World Wide Web Consortium (W3C) para superar essa limitação. O Cloud Storage é compatível com esta especificação permitindo que você configure seus intervalos para aceitarem o CORS. Continuando com o exemplo acima, você pode configurar o intervalo example.storage.googleapis.com para que um navegador possa compartilhar seus recursos com scripts de example.appspot.com.

Como funciona o CORS

Há dois tipos de solicitações de CORS, simples e de confirmação. Uma solicitação simples pode ser iniciada diretamente. Uma solicitação de confirmação precisa enviar uma solicitação preliminar de "comprovação" ao servidor para conseguir permissão antes que a solicitação principal possa continuar. Uma solicitação é de confirmação se alguma das circunstâncias a seguir for verdadeira:

  • Ela usa métodos diferentes de GET, HEAD ou POST.
  • Ela usa o método POST com um Content-Type diferente de text/plain, application/x-www-form-urlencoded ou multipart/form-data.
  • Ela define cabeçalhos personalizados.

O processo a seguir ocorre quando um navegador faz uma solicitação simples ao Cloud Storage:

  1. O navegador adiciona o cabeçalho Origin à solicitação. O cabeçalho Origin contém a origem do recurso que procura compartilhar os recursos do outro domínio, por exemplo, Origin:http://www.example.appspot.com.

  2. O Cloud Storage compara o método HTTP da solicitação e o valor do cabeçalho Origin às informações de Métodos e Origens na configuração do CORS do intervalo de destino para ver se há correspondências. Se houver, o Cloud Storage inclui o cabeçalho Access-Control-Allow-Origin na resposta. O cabeçalho Access-Control-Allow-Origin contém o valor do cabeçalho Origin da solicitação inicial.

  3. O navegador recebe a resposta e verifica se o valor Access-Control-Allow-Origin corresponde ao domínio especificado na solicitação original. Se eles corresponderem, a solicitação será bem-sucedida. Se eles não corresponderem ou se o cabeçalho Access-Control-Allow-Origin não estiver presente na resposta, a solicitação apresentará falha.

Uma solicitação de confirmação executa primeiro as etapas a seguir. Se for bem-sucedida, segue o mesmo processo que uma solicitação simples:

  1. O navegador envia uma solicitação OPTIONS que contém o Requested Method e os Requested Headers da solicitação principal.

  2. O servidor responde com os valores dos métodos HTTP e cabeçalhos permitidos pelo recurso de destino. Se algum dos valores de método ou cabeçalho na solicitação de confirmação não estiver no conjunto de métodos e cabeçalhos permitidos pelo recurso de destino, a solicitação apresentará falha e a solicitação principal não será enviada.

Esta é uma descrição muito simplificada do CORS. Para uma descrição mais completa, leia as especificações de Compartilhamento de recursos entre origens.

Suporte ao CORS do Cloud Storage

O Cloud Storage permite que você defina a configuração do CORS somente no nível do intervalo. Para definir a configuração do CORS de um intervalo, use a ferramenta de linha de comando gsutil, a API XML ou a API JSON.

Para mais informações sobre como configurar o CORS em um intervalo, consulte Como configurar o compartilhamento de recursos entre origens (CORS). Para mais informações sobre os elementos de configuração do CORS, consulte Definir CORS de intervalo.

Você pode usar um dos URLs de solicitação da API XML a seguir para conseguir uma resposta do Cloud Storage que contenha os cabeçalhos do CORS:

storage.googleapis.com/[BUCKET_NAME]
[BUCKET_NAME].storage.googleapis.com

Para informações sobre URLs de solicitação da API XML, consulte Solicitar pontos de extremidade.

Suporte ao CORS do lado do cliente

A maioria dos navegadores usa o objeto XMLHttpRequest para fazer uma solicitação entre domínios. A XMLHttpRequest cuida de todo o trabalho de inserção dos cabeçalhos corretos e da manipulação da interação do CORS com o servidor. Você não precisa adicionar nenhum código novo para aproveitar o suporte do CORS nos intervalos do Cloud Storage.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.