S3 - Header Akses-Kontrol-Bolehkan-Asal

187

Apakah ada yang berhasil menambahkan Access-Control-Allow-Originheader respons? Yang saya butuhkan adalah sesuatu seperti ini:

<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" />

Permintaan dapatkan ini harus berisi di respons, tajuk, Access-Control-Allow-Origin: *

Pengaturan CORS saya untuk bucket terlihat seperti ini:

<?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>

Seperti yang mungkin Anda harapkan tidak ada Origintajuk respons.

Wowzaaa
sumber
4
Kemungkinan duplikat stackoverflow.com/questions/17570100/…
Kevin Borders
1
Satu hal yang hilang dari ini adalah: <ExposeHeader> Access-Control-Allow-Origin </ExposeHeader>
Dimitry

Jawaban:

198

Biasanya, yang perlu Anda lakukan adalah "Tambahkan Konfigurasi CORS" di properti bucket Anda.

amazon-screen-shot

Itu <CORSConfiguration>datang dengan beberapa nilai default. Hanya itu yang saya butuhkan untuk menyelesaikan masalah Anda. Cukup klik "Simpan" dan coba lagi untuk melihat apakah itu berhasil. Jika tidak, Anda juga dapat mencoba kode di bawah ini (dari jawaban alxrb) yang tampaknya telah bekerja untuk sebagian besar orang.

<?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> 

Untuk info lebih lanjut, Anda dapat membaca artikel ini tentang Mengedit Izin Ember .

Flavio Wuensche
sumber
4
Sepertinya itu mungkin. Coba baca tautan di atas (dalam jawaban) atau langsung saja ke yang ini: docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTcors.html
Flavio Wuensche
7
Terima kasih. Cukup mengklik simpan pada ini memungkinkan font saya dimuat.
Tania Rascia
2
Saya perhatikan kadang-kadang berfungsi dan kadang-kadang saya mendapatkan kesalahan browser setelah mengedit ini. Tidak yakin apakah itu CloudFlare atau S3.
Mark
4
Anda mungkin perlu menambahkan HEADke AllowedMethods
jordanstephens
32
Tidak bekerja untuk saya. Masih belum ada tajuk 'Akses-Kontrol-Bolehkan-Asal' dalam respons permintaan HEAD atau GET.
carpiediem
104

Saya mengalami masalah yang sama dengan memuat font web, ketika saya mengklik 'tambahkan konfigurasi CORS', di properti bucket, kode ini sudah ada di sana:

<?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> 

Saya baru saja mengklik simpan dan itu berhasil memperlakukan, font web kustom saya memuat di IE & Firefox. Saya bukan ahli dalam hal ini, saya hanya berpikir ini mungkin membantu Anda.

alxrb
sumber
12
Terima kasih! Ini berhasil untuk saya. Saya sampai sejauh mengklik 'tambahkan konfigurasi CORS', tetapi tidak menyadari saya harus mengklik 'simpan' karena saya pikir saya sedang melihat konfigurasi default. Doh.
Jack Cushman
35
Saya harus menetapkan <AllowedHeader>*</AllowedHeader>agar berfungsi (lebih baik membuat aturan baru untuk situs Anda hanya saat melakukan ini)
parlemen
4
@parlemen memiliki keajaiban di sana, karena semua pengaturan di atas tidak melakukan trik sampai <AllowedHeader> diatur ke wildcard. Hore.
Neal Magee
Saya pergi ke pengaturan CORS dan menemukan pengaturan yang sama di sana, tetapi <AllowedOrigin> * </AllowedOrigin> menjadi aktif ketika saya menekan tombol save. Itu tidak sebelumnya.
dvdmn
1
Itu dia, klik Simpan
lapinkoira
48

Jika permintaan Anda tidak menentukan Originheader, S3 tidak akan menyertakan header CORS dalam respons. Ini benar-benar membuat saya marah karena saya terus mencoba untuk menggulung file untuk menguji CORS tetapi curl tidak termasuk Origin.

eremzeit
sumber
2
saya mencari di internet sejak 2, minggu semua artikel dan jawaban berbicara tentang mengubah konfigurasi S3 CORS yang saya lakukan seperti yang mereka katakan tetapi tidak ada perubahan pada respons, sampai saya melihat jawaban Anda masuk akal bagi saya, saya mengujinya menggunakan tukang pos dan bekerja! jadi terima kasih banyak
Abdallah Awwad Alkhwaldah
1
Adakah yang tahu bagaimana cara mengubah tajuk imgtag? Saya tidak dapat mengirim tajuk yang berbeda, browser mengirim permintaan
idan
1
OMG didokumentasikan di mana saja?
Darkowic
2
Itu :) docs.aws.amazon.com/AmazonS3/latest/dev/… > Verifikasi bahwa permintaan memiliki header Asal. Jika header tidak ada, Amazon S3 tidak memperlakukan permintaan sebagai permintaan lintas-asal, dan tidak mengirim header respons CORS dalam respons.
Darkowic
46

@jordanstephens mengatakan ini dalam komentar, tetapi agak hilang dan merupakan perbaikan yang sangat mudah bagi saya.

Saya cukup menambahkan metode KEPALA dan mengklik disimpan dan mulai bekerja.

<CORSConfiguration>
	<CORSRule>
		<AllowedOrigin>*</AllowedOrigin>
		<AllowedMethod>GET</AllowedMethod>
		<AllowedMethod>HEAD</AllowedMethod> <!-- Add this -->
		<MaxAgeSeconds>3000</MaxAgeSeconds>
		<AllowedHeader>Authorization</AllowedHeader>
	</CORSRule>
</CORSConfiguration>

Senica Gonzalez
sumber
3
ini bekerja pada 17 Januari 2018, jawaban yang diterima adalah memalukan. lol
lasec0203
4
Ya. Ini memperbaiki kesalahan "Tidak ada header 'Access-Control-Allow-Origin'" di Chrome ketika MENDAPATKAN hal-hal seperti font dari AWS S3.
Nostalg.io
1
Iya! Terima kasih banyak. Mengizinkan HEADmetode melakukan trik.
Zac
37

Ini adalah cara sederhana untuk membuat ini berfungsi.

Saya tahu ini adalah pertanyaan lama, tetapi masih sulit untuk menemukan solusinya.

Untuk memulai, ini bekerja untuk saya pada proyek yang dibangun dengan Rails 4, Paperclip 4, CamanJS, Heroku dan AWS S3.


Anda harus meminta gambar Anda menggunakan crossorigin: "anonymous"parameter.

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

Tambahkan URL situs Anda ke CORS di AWS S3. Berikut ini adalah referensi dari Amazon tentang itu. Cukup banyak, cukup buka ember Anda, lalu pilih " Properti " dari tab di sebelah kanan, buka " tab Izin dan kemudian, klik" Edit Konfigurasi CORS ".

Awalnya, saya telah < AllowedOrigin>mengatur untuk *. Ubah saja tanda bintang itu ke URL Anda, pastikan untuk menyertakan opsi seperti http://dan https://di baris terpisah. Saya mengharapkan tanda bintang menerima "Semua", tetapi tampaknya kita harus lebih spesifik dari itu.

Ini adalah tampilannya bagiku.

masukkan deskripsi gambar di sini

Horacio
sumber
1
tidak seperti jawaban yang diterima, ini sebenarnya bekerja! Bahkan memuat ClaudFront CDN S3 ini mereplikasi header ini. Terima kasih Bung. Menyelamatkan saya beberapa jam!
setara dengan 8
5
Jika Anda menggunakan CloudFront, Anda mungkin juga ingin melihatnya - blog.celingest.com/en/2014/10/02/…
Kunal
1
Berkat tautan @ Kunal. CloudFront menambahkan lapisan kompleksitas ke persamaan ini.
Tyler Collier
1
Saya sudah sampai pada MDN <img>, tetapi saya hanya melakukan crossOrigin="true"kesalahan. TERIMA KASIH!
Cezille07
Wow ini benar-benar membantu saya! Saya dapat menggunakannya di localhost dan saya bahkan dapat menggunakan tanda bintang, kuncinya adalah menambahkan crossorigin = "anonim" ke elemen html saya: D
Alexander
23

Lihat jawaban di atas. (tapi saya punya bug chrome juga)

Jangan memuat dan menampilkan gambar pada halaman di CHROME. (jika nanti Anda akan membuat contoh baru)

Dalam kasus saya, saya memuat gambar dan menampilkannya di halaman. Ketika mereka diklik, saya membuat contoh baru dari mereka:

// 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

Chrome telah menembolok versi lain dan TIDAK PERNAH mencoba mengambil kembali crossoriginversi (bahkan jika saya menggunakancrossorigin pada gambar yang ditampilkan.

Untuk memperbaikinya, saya menambahkan ?crossoriginke bagian akhir url gambar (tetapi Anda dapat menambahkan ?blah, itu hanya sewenang-wenang untuk mengubah status cache) ketika saya memuatnya untuk kanvas .. Beritahu saya jika Anda menemukan perbaikan yang lebih baik untuk CHROME

Funkodebat
sumber
5
Caching terbukti menjadi masalah saya juga (setelah saya mencoba jawaban yang diterima). Terima kasih untuk ini.
FearMediocrity
Juga memiliki masalah cache di Chrome. Perbaikan mudah: Alat / Pengaturan> Hapus Data Perambanan ...> Gambar dan File dalam Tembok Meskipun solusi lain mungkin diperlukan untuk pengguna yang mungkin menghadapi masalah ini.
StevieP
1
Terima kasih atas jawaban ini! Saya memiliki masalah yang sama dengan Chrome dan saya tidak menemukan jawaban.
Wandrille
1
Semua orang perlu mencoba ini jika memiliki masalah dengan CORS !! Simpan hariku!
Sangar82
23

Saya hanya akan menambahkan jawaban ini - di atas - yang memecahkan masalah saya.

Untuk mengatur AWS / CloudFront Distribution Point untuk memacu CORS Origin Header, klik ke antarmuka edit untuk Distribution Point:

masukkan deskripsi gambar di sini

Buka tab perilaku dan edit perilaku, ubah "Cache Berdasarkan Header Permintaan Terpilih" dari Tidak Ada ke Daftar Putih, lalu pastikan Originditambahkan ke kotak daftar putih. Lihat Mengkonfigurasi CloudFront untuk Menghormati Pengaturan CORS di AWS Documents untuk lebih lanjut.

masukkan deskripsi gambar di sini

MikeiLL
sumber
Metode HTTP apa yang diizinkan yang harus Anda tetapkan?
Pelajar
Maksudmu seperti GET, POST, DELETE, dll ...? Di mana mereka diminta?
MikeiLL
Bisakah Anda ulangi pertanyaan Anda, jadi saya bisa mengerti apakah Anda merujuk pada formulir web cf, atau aplikasi yang diminta sumber daya s3? Jika yang pertama, ada opsi metode HTTP yang disebutkan dalam dokumen di sini docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/…
Learner
Sepertinya Anda bertanya apa yang HTTP Request Methodsharus diatur dalam AWS. Dan untuk pertanyaan itu, saya tidak melihat bahwa seseorang perlu diatur di mana saja. Jika Anda berbicara tentang dalam aplikasi yang meminta sumber daya, saya yakin Anda hanya akan meminta file dengan itu url string: yaitu file gambar, video, audio.
MikeiLL
Itu adalah bagian yang hilang! Terima kasih! Saya mencoba semua jawaban di atas yang satu ini dan hanya setelah membolehkan daftar putih tajuk ini berfungsi untuk saya di localhost
Omer Leshem
11

Saya mengalami masalah serupa memuat model 3D dari S3 ke penampil 3D javascript (3D HOP), tetapi anehnya hanya dengan jenis file tertentu (.nxs).

Apa yang diperbaiki untuk saya berubah AllowedHeaderdari default Authorizationke *dalam konfigurasi 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>
beranda
sumber
3
Perlu disetel <AllowedHeader>*</AllowedHeader>seperti ini dengan tanda bintang untuk Chrome pada Oktober 2017. Terima kasih banyak! (Juga, jangan lupa untuk menghapus cache browser setelah pengaturan).
Nostalg.io
Poin kecil - Saya pikir Anda tidak perlu mengubah AllowedHeader. Saya juga mengalami masalah yang sama di sini, tetapi ternyata itu adalah browser caching respon sebelumnya ( MaxAgeSeconds). Di Pengaturan DevTools, Anda dapat mengabaikan cache saat konsol terbuka. Setelah ini selesai, ia mulai bekerja untuk saya
divillysausages
DiizinkanHeader> * <pasti memperbaiki masalah ini untuk saya. Ini hanya berlaku ketika permintaan dikirim melalui pustaka xhr tertentu? Saya menggunakan Axios dan merasa perlu.
Jeremy
6

Seperti orang lain yang memiliki status, Anda harus terlebih dahulu memiliki konfigurasi CORS di bucket S3 Anda:

<CORSConfiguration>
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod> <!-- Add this -->
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

Tetapi dalam kasus saya setelah melakukan itu, itu masih tidak berfungsi. Saya menggunakan Chrome (mungkin masalah yang sama dengan browser lain).

Masalahnya adalah Chrome menyimpan gambar dengan header (tidak berisi data CORS) , jadi apa pun yang saya coba ubah di AWS, saya tidak akan melihat header CORS saya.

Setelah membersihkan cache Chrome dan memuat ulang halaman , gambar memiliki Header CORS yang diharapkan

Tonio
sumber
1
Terima kasih! Masalah caching ini membuatku gila. Bagi siapa pun yang ingin menghapus cache dengan mudah di Chrome (versi 73), klik kanan tombol muat ulang dan pilih 'Empty Cache and Hard Reload'. Kemudian Anda akan melihat efek dari setiap perubahan yang Anda lakukan pada S3 CORS Anda dalam waktu <5 detik. (Mungkin lebih cepat - itu hanya berapa lama untuk beralih tab browser.)
guntur
1
INI adalah masalah saya. Ember saya memiliki konfigurasi CORS yang sesuai, browser saya sangat efisien 🤪Terima kasih.
Daniel Brady
5

Saya mencoba semua jawaban di atas dan tidak ada yang berhasil. Sebenarnya, kita membutuhkan 3 langkah dari jawaban di atas bersama untuk membuatnya bekerja:

  1. Seperti yang disarankan oleh Flavio; tambahkan konfigurasi CORS pada bucket Anda:

    <CORSConfiguration>
       <CORSRule>
         <AllowedOrigin>*</AllowedOrigin>
         <AllowedMethod>GET</AllowedMethod>
       </CORSRule>
     </CORSConfiguration>
    
  2. Pada gambar; sebutkan crossorigin:

    <img href="abc.jpg" crossorigin="anonymous">
    
  3. Apakah Anda menggunakan CDN? Jika semuanya berfungsi dengan baik terhubung ke server asal tetapi TIDAK melalui CDN; itu berarti Anda memerlukan beberapa pengaturan pada CDN Anda seperti menerima tajuk CORS. Pengaturan yang tepat tergantung pada CDN yang Anda gunakan.

Deepak Singhal
sumber
Terima kasih bagian CDN sangat penting, dapatkah Anda menambahkan rincian tentang apa yang diperlukan di tingkat CDN?
svelandiag
5

Saya tiba di utas ini, dan tidak ada solusi di atas yang ternyata berlaku untuk kasus saya. Ternyata, saya hanya perlu menghapus garis miring dari <AllowedOrigin>URL di konfigurasi CORS bucket saya.

Gagal:

<?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>

Memenangkan:

<?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>

Saya harap ini menyelamatkan seseorang dari mencabut rambut.

Charney Kaye
sumber
3
  1. Atur konfigurasi CORS di pengaturan Izin untuk Anda S3 bucket

    <?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. S3 menambahkan header CORS hanya ketika permintaan http memiliki Originheader.

  3. CloudFront tidak meneruskan Originheader secara default

    Anda perlu memasukkan daftar putih Originheader di pengaturan Perilaku untuk CloudFront Distribution Anda.

Pawel Furmaniak
sumber
2

Saya memperbaikinya menulis yang berikut ini:

<?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>

Kenapa <AllowedHeader>*</AllowedHeader>berhasil dan <AllowedHeader>Authorization</AllowedHeader>tidak?

Pablo García Miranda
sumber
1

"jawaban" fwuensche adalah corret untuk mendirikan CDN; melakukan ini, saya menghapus MaxAgeSeconds.

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
Mich. Gio.
sumber
1

Di Konsol Manajemen S3 terbaru, ketika Anda mengklik pada konfigurasi CORS pada tab Izin, itu akan menunjukkan sampel konfigurasi CORS default. Konfigurasi ini tidak sebenarnya aktif! Anda harus terlebih dahulu mengklik simpan untuk mengaktifkan CORS.

Butuh waktu terlalu lama bagi saya untuk mengetahui hal ini, semoga ini akan menghemat waktu seseorang.

retas
sumber
1

Konfigurasi ini memecahkan masalah bagi saya:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <ExposeHeader>ETag</ExposeHeader>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
DIWAKAR
sumber
Saya melihat sangat sedikit perbedaan antara konfigurasi ini dan konfigurasi banyak jawaban lain dalam pertanyaan ini. Apakah ada upaya yang dilakukan untuk menggunakan konfigurasi jawaban yang lebih lama sebelum memposting konfigurasi ini?
entpnerd
1

Peringatan - Retas.

Jika Anda menggunakan S3Image untuk menampilkan gambar dan kemudian mencoba mendapatkannya melalui pengambilan, mungkin untuk memasukkannya ke PDF atau melakukan pemrosesan lain, diperingatkan bahwa Chrome akan menembolok hasil pertama yang tidak memerlukan permintaan preflight CORS, dan kemudian coba untuk mendapatkan sumber daya yang sama tanpa permintaan PILIHAN prelight untuk pengambilan dan akan gagal karena pembatasan browser.

Cara lain untuk menyiasatinya adalah memastikan bahwa S3Image menyertakan crossorigin: 'gunakan-kredensial' seperti yang disebutkan di atas. Dalam file yang Anda gunakan S3Image, (Saya memiliki komponen yang membuat versi cache S3Image, jadi itu adalah tempat yang sempurna bagi saya), timpa metode prototipe imageEl S3Image untuk memaksanya memasukkan atribut ini.

S3Image.prototype.imageEl = function (src, theme) {
    if (!src) {
        return null;
    }
    var selected = this.props.selected;
    var containerStyle = { position: 'relative' };
    return (React.createElement("div", { style: containerStyle, onClick: this.handleClick },
        React.createElement("img", { crossOrigin: 'use-credentials', style: theme.photoImg, src: src, onLoad: this.handleOnLoad, onError: this.handleOnError}),
        React.createElement("div", { style: selected ? theme.overlaySelected : theme.overlay })));
};

Masalah 403 sekarang telah diatasi. Aggrr sakit sekali!

Philip Murphy
sumber
1
<AllowedOrigin>*</AllowedOrigin>

bukan ide yang baik karena dengan * Anda memberikan akses situs web apa pun ke file di keranjang Anda. Sebagai gantinya, Anda harus menentukan asal mana yang benar-benar diizinkan untuk menggunakan sumber daya dari ember Anda. Biasanya, itu seperti nama domain Anda

<AllowedOrigin>https://www.example.com</AllowedOrigin>

atau jika Anda ingin menyertakan semua subdomain yang mungkin:

<AllowedOrigin>*.example.com</AllowedOrigin>
Rudolf B
sumber
1

Di bawah ini adalah konfigurasi dan tidak masalah untuk saya. Saya harap ini akan membantu menyelesaikan masalah Anda di AWS S3.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <ExposeHeader>ETag</ExposeHeader>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Gaurang Sondagar
sumber
Ini berhasil bagi saya untuk memulai, kemudian saya memperketat keamanan dengan menghapus metode yang tidak diperlukan, dan menetapkannya hanya untuk header yang saya inginkan
hitwill
0

Jawaban yang diterima berfungsi, tetapi tampaknya jika Anda pergi ke sumber daya secara langsung, maka tidak ada header lintas asal. Jika Anda menggunakan cloudfront, ini akan menyebabkan cloudfront untuk cache versi tanpa header. Ketika Anda kemudian pergi ke url berbeda yang memuat sumber ini, Anda akan mendapatkan masalah lintas asal ini.

TigerBear
sumber
0

Jika pengaturan CORS Anda tidak membantu Anda.

Pastikan konfigurasi S3 benar. Saya memiliki nama ember yang tidak valid di Storage.configure. Saya menggunakan nama singkat dari ember dan itu menyebabkan kesalahan:

Header 'Access-Control-Allow-Origin' tidak ada pada sumber daya yang diminta.

Alexander
sumber
0

Pertama, aktifkan CORS di bucket S3 Anda. Gunakan kode ini sebagai panduan:

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>http://www.example1.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>http://www.example2.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

2) Jika masih tidak berfungsi, pastikan juga menambahkan "crossorigin" dengan nilai "*" ke tag img Anda. Letakkan ini di file html Anda:

  let imagenes = document.getElementsByTagName("img");
    for (let i = 0; i < imagenes.length; i++) {
      imagenes[i].setAttribute("crossorigin", "*");
Christian Saavedra
sumber
-1

Untuk apa nilainya, saya memiliki masalah serupa - ketika mencoba untuk menambahkan asal yang diizinkan spesifik (tidak *).

Ternyata saya harus memperbaiki

<AllowedOrigin>http://mydomain:3000/</AllowedOrigin>

untuk

<AllowedOrigin>http://mydomain:3000</AllowedOrigin>

(perhatikan slah terakhir di URL)

Semoga ini bisa membantu seseorang

Yossi Vainshtein
sumber