Usar o compartilhamento de recursos de origem cruzada (CORS)
O compartilhamento de recursos de origem cruzada (CORS) define uma maneira de os aplicativos web clientes carregados em um domínio interagirem com recursos em outro domínio. Com o suporte do CORS, você pode criar aplicações web no lado do cliente com o Amazon S3 e permitir seletivamente o acesso de origem cruzada aos seus recursos do Amazon S3.
Esta seção fornece uma visão geral do CORS. Os subtópicos descrevem como você pode ativar o CORS usando o console do Amazon S3 ou, programaticamente, usando a API REST do Amazon S3 e os AWS SDKs.
Compartilhamento de recursos de origem cruzada: cenários de caso de uso
Veja a seguir exemplos de cenário de uso do CORS:
Cenário 1
Suponha que você esteja hospedando um site em um bucket do Amazon S3 chamado website
como descrito em Hospedagem de um site estático usando o Amazon S3. Os usuários carregam o endpoint de site.
http://website.s3-website.us-east-1.amazonaws.com
Agora você quer usar JavaScript nas páginas da web armazenadas nesse bucket para fazer solicitações GET e PUT autenticadas no mesmo bucket usando o endpoint da API do Amazon S3 para o bucket website.s3.us-east-1.amazonaws.com
. Um navegador normalmente impediria que o JavaScript permitisse essas solicitações. No entanto, com CORS, é possível configurar seu bucket para permitir explicitamente solicitações de origem cruzada de website.s3-website.us-east-1.amazonaws.com
.
Cenário 2
Suponha que você queira hospedar uma fonte web de seu bucket do S3. Mais uma vez, os navegadores exigem uma verificação de CORS (também chamada de verificação de simulação) para carregar fontes web. Assim, é preciso configurar o bucket que está hospedando a fonte web para permitir que qualquer origem faça essas solicitações.
Como o Amazon S3 avalia a configuração de CORS em um bucket?
Quando o Amazon S3 recebe uma solicitação de simulação de um navegador, ele avalia a configuração de CORS para o bucket e usa a primeira regra CORSRule
que corresponde à solicitação de entrada do navegador para permitir uma solicitação de origem cruzada. Para que uma regra seja correspondente, as seguintes condições devem ser satisfeitas:
-
O cabeçalho
Origin
em uma solicitação do CORS para seu bucket deve corresponder às origens do elementoAllowedOrigins
na configuração do CORS. -
Os métodos HTTP especificados no
Access-Control-Request-Method
em uma solicitação de CORS para o bucket devem corresponder ao método ou aos métodos listados no elementoAllowedMethods
na configuração de CORS. -
Os cabeçalhos listados no cabeçalho
Access-Control-Request-Headers
em uma solicitação de pré-processamento devem corresponder aos cabeçalhos no elementoAllowedHeaders
na configuração do CORS.
nota
As ACLs e as políticas continuam sendo aplicadas quando você habilita o CORS no bucket.
Como o ponto de acesso do Object Lambda é compatível com o CORS
Ao receber uma solicitação de um navegador ou quando a solicitação inclui um cabeçalho Origin
, o S3 Object Lambda sempre adiciona um campo de cabeçalho “AllowedOrigins":"*"
.
Para obter mais informações sobre como usar o CORS, consulte os tópicos a seguir.