S3-Access-Control-Allow-Origin Header

Alguém conseguiu adicionar Access-Control-Allow-Origin aos cabeçalhos de resposta? O que preciso é de algo assim.
<img src="http://360assets.s3.amazonaws.com/tours/8b16734d-336c-48c7-95c4-3a93fa023a57/1_AU_COM_180212_Areitbahn_Hahnkoplift_Bergstation.tiles/l2_f_0101.jpg" />

Este pedido de obtenção deve conter na resposta, cabeçalho, Access-Control-Allow-Origin: *

As minhas configurações para o balde são as seguintes:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Como seria de esperar, não existe cabeçalho de resposta Origin.

Author: John Rotenstein, 2013-07-08

14 answers

Normalmente, tudo o que precisas de fazer é "Adicionar configuração de CORS" nas propriedades do teu balde.

amazon-screen-shot

O <CORSConfiguration> vem com alguns valores predefinidos. Era tudo o que precisava para resolver o teu problema. Basta clicar em "Salvar" e tentar novamente para ver se funcionou. Se não funcionar, você também pode tentar o código abaixo (a partir da resposta alxrb) que parece ter funcionado para a maioria das pessoas.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration> 

Para mais informações, pode ler este artigo em editar a permissão do balde .

 121
Author: Flavio Wuensche, 2018-07-17 19:49:20

Eu estava a ter um problema semelhante com o carregamento de fontes web, quando carreguei em 'Adicionar configuração de CORS', nas propriedades do balde, este código já estava lá:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration> 
Cliquei no save e funcionou, os meus tipos de letra personalizados estavam a carregar no IE & Firefox. Não sou especialista nisto, só pensei que isto te pudesse ajudar.
 89
Author: alxrb, 2018-07-17 19:51:53
@Jordanstephens disse isso em um comentário, mas ele meio que se perde e foi uma solução muito fácil para mim. Eu simplesmente adicionei o método da cabeça e cliquei no saved e ele começou a funcionar.

<CORSConfiguration>
	<CORSRule>
		<AllowedOrigin>*</AllowedOrigin>
		<AllowedMethod>GET</AllowedMethod>
		<AllowedMethod>HEAD</AllowedMethod> <!-- Add this -->
		<MaxAgeSeconds>3000</MaxAgeSeconds>
		<AllowedHeader>Authorization</AllowedHeader>
	</CORSRule>
</CORSConfiguration>
 30
Author: Senica Gonzalez, 2017-10-24 14:12:24
Esta é uma maneira simples de fazer isto funcionar. Sei que esta é uma pergunta antiga, mas ainda é difícil encontrar uma solução. Para começar, isto funcionou para mim num projecto construído com Carris 4, Paperclip 4, CamanJS, Heroku e AWS S3.

Tem de pedir a sua imagem usando o parâmetro crossorigin: "anonymous".

    <img href="your-remote-image.jpg" crossorigin="anonymous"> 

Adicione o URL do seu site ao CORS no AWS S3. Aqui está uma referção da Amazon sobre isso. Basicamente, vai para o teu balde, e depois seleccione " propriedades "das páginas à direita, abra "permissões e depois carregue em"editar a configuração dos CORS".

Originalmente, eu tinha < AllowedOrigin> programado para *. Basta mudar esse asterisco para o seu URL, certifique-se de incluir opções como http:// e https:// em linhas separadas. Esperava que o asterisco aceitasse "tudo", mas aparentemente temos de ser mais específicos do que isso.

É assim que me parece.

enter image description here

 26
Author: Horacio, 2016-04-26 22:15:43

Se o seu pedido não indicar um cabeçalho Origin, o S3 não incluirá os cabeçalhos do CORS na resposta. Isso realmente me impressionou porque eu continuei tentando enrolar os arquivos para testar os CORS, mas o curl não inclui {[[0]}.

 24
Author: eremzeit, 2015-10-01 12:43:17

Ver acima as respostas. (mas eu também tinha um bug cromado)

Não carregues e mostres a imagem na página do CHROME. (se você vai mais tarde criar uma nova instância)

No meu caso, carreguei imagens e mostrei-as na página. Quando foram clicados, criei um novo exemplo deles:
// there is already an html <img /> on the page, I'm creating a new one now
img = $('<img crossorigin />')[0]
img.onload = function(){
  context.drawImage(img, 0, 0)
  context.getImageData(0,0,w,h)
}
img.src = 'http://s3.amazonaws.com/my/image.png'; // I added arbitrary ?crossorigin to change the URL of this to fix it

O Chrome já tinha Cache outra versão e nunca tentou obter de novo a versão crossorigin (mesmo que estivesse a usar o crossorigin nas imagens apresentadas.

Para consertar, eu adicionei ?crossorigin ao final do url da imagem (mas você pode adicionar ?blah, é apenas arbitrário alterar o estado da 'cache') quando a carreguei para a área de desenho.. Avisa-me se encontrares uma solução melhor para o cromado.

 14
Author: Funkodebat, 2015-11-05 04:08:25

Vou adicionar a esta resposta –acima–que resolveu o meu problema.

Para configurar o ponto de distribuição AWS/CloudFront para rodar o cabeçalho de origem do CORS, carregue na interface de edição para o ponto de Distribuição:

enter image description here

Vá para a página behaviors e edite o comportamento, mudando os cabeçalhos da lista branca de nenhum para a lista branca, depois certifique-se que Origin é adicionado à caixa da lista branca.

enter image description here

 11
Author: MikeiLL, 2018-04-26 15:52:33

Eu estava tendo problemas semelhantes Carregando modelos 3D de S3 em um visualizador 3D javascript (3D HOP), mas estranhamente o suficiente apenas com certos tipos de arquivos (.nxs).

O que o corrigiu para mim foi mudar AllowedHeader do padrão Authorization para * na configuração do CORS:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
 7
Author: VME, 2017-08-30 17:56:21
  1. Defina a configuração do CORS na configuração das permissões para o seu balde S3

    <?xml version="1.0" encoding="UTF-8"?>
    <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
        <CORSRule>
            <AllowedOrigin>*</AllowedOrigin>
            <AllowedMethod>GET</AllowedMethod>
            <MaxAgeSeconds>3000</MaxAgeSeconds>
            <AllowedHeader>Authorization</AllowedHeader>
        </CORSRule>
    </CORSConfiguration> 
    
  2. O S3 adiciona cabeçalhos de CORS apenas quando o pedido de http tem o cabeçalho Origin.

  3. CloudFront não avança cabeçalho Origin por omissão

    Você precisa de whitelist Origin cabeçalho na configuração do comportamento para a sua distribuição da frente da nuvem.

 3
Author: Pawel Furmaniak, 2017-06-26 16:27:17

Arranjei-o escrevendo o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

Porque <AllowedHeader>*</AllowedHeader> está a funcionar e <AllowedHeader>Authorization</AllowedHeader> não?

 2
Author: Pablo García Miranda, 2017-10-24 10:55:01
Tentei todas as respostas e nada funcionou. Na verdade, precisamos de 3 passos de respostas de cima juntos para fazer com que funcione:
  1. Tal como sugerido por Flavio; adicione configuração de CORS no seu balde:

    <CORSConfiguration>
       <CORSRule>
         <AllowedOrigin>*</AllowedOrigin>
         <AllowedMethod>GET</AllowedMethod>
       </CORSRule>
     </CORSConfiguration>
    
  2. Na imagem; mencionar os caracteres cruzados:

    <img href="abc.jpg" crossorigin="anonymous">
    
  3. Estás a usar CDN? Se tudo funcionar bem ligando-se ao servidor de origem, mas não através de CDN; isso significa que você precisa de alguma configuração no seu CDN como aceitar os cabeçalhos de CORS. A configuração exacta depende de qual RDN que está a usar.

 2
Author: Deepak, 2018-06-14 20:05:25
Cheguei a este tópico e nenhuma das soluções acima se aplicava ao meu caso. Acontece que, eu simplesmente tive que remover uma barra posterior na configuração do CORS do meu balde.

Falha:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://www.mywebsite.com/</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Vitórias:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://www.mywebsite.com</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
Espero que isto poupe alguém de puxar o cabelo.
 1
Author: charneykaye, 2017-04-19 19:14:59

Fwuensche "answer" é corret para configurar um CDN; ao fazer isto, removi Maxagesegundos.

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
 0
Author: Mich. Gio., 2015-08-16 11:13:12

Na última consola de gestão S3, quando carregar na configuração do CORS na página de permissões, irá mostrar uma configuração predefinida do exemplo dos CORS. Esta configuração é não realmente activa, no entanto! Você tem que primeiro clicar em Salvar, a fim de ativar o CORS.

Levei muito tempo a perceber isto, espero que isto poupe tempo a alguém.
 0
Author: hackel, 2017-08-15 18:13:18