Apakah ada yang berhasil menambahkan Access-Control-Allow-Origin
header 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 Origin
tajuk respons.
Jawaban:
Biasanya, yang perlu Anda lakukan adalah "Tambahkan Konfigurasi CORS" di properti bucket Anda.
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.Untuk info lebih lanjut, Anda dapat membaca artikel ini tentang Mengedit Izin Ember .
sumber
HEAD
keAllowedMethod
sSaya mengalami masalah yang sama dengan memuat font web, ketika saya mengklik 'tambahkan konfigurasi CORS', di properti bucket, kode ini sudah ada di sana:
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.
sumber
<AllowedHeader>*</AllowedHeader>
agar berfungsi (lebih baik membuat aturan baru untuk situs Anda hanya saat melakukan ini)Jika permintaan Anda tidak menentukan
Origin
header, 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 termasukOrigin
.sumber
img
tag? Saya tidak dapat mengirim tajuk yang berbeda, browser mengirim permintaan@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.
sumber
HEAD
metode melakukan trik.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.Ini adalah tampilannya bagiku.
sumber
<img>
, tetapi saya hanya melakukancrossOrigin="true"
kesalahan. TERIMA KASIH!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:
Chrome telah menembolok versi lain dan TIDAK PERNAH mencoba mengambil kembali
crossorigin
versi (bahkan jika saya menggunakancrossorigin
pada gambar yang ditampilkan.Untuk memperbaikinya, saya menambahkan
?crossorigin
ke 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 CHROMEsumber
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:
Buka tab perilaku dan edit perilaku, ubah "Cache Berdasarkan Header Permintaan Terpilih" dari Tidak Ada ke Daftar Putih, lalu pastikan
Origin
ditambahkan ke kotak daftar putih. Lihat Mengkonfigurasi CloudFront untuk Menghormati Pengaturan CORS di AWS Documents untuk lebih lanjut.sumber
HTTP Request Methods
harus 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 ituurl string
: yaitu file gambar, video, audio.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
AllowedHeader
dari defaultAuthorization
ke*
dalam konfigurasi CORS:sumber
<AllowedHeader>*</AllowedHeader>
seperti ini dengan tanda bintang untuk Chrome pada Oktober 2017. Terima kasih banyak! (Juga, jangan lupa untuk menghapus cache browser setelah pengaturan).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 sayaSeperti orang lain yang memiliki status, Anda harus terlebih dahulu memiliki konfigurasi CORS di bucket S3 Anda:
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
sumber
Saya mencoba semua jawaban di atas dan tidak ada yang berhasil. Sebenarnya, kita membutuhkan 3 langkah dari jawaban di atas bersama untuk membuatnya bekerja:
Seperti yang disarankan oleh Flavio; tambahkan konfigurasi CORS pada bucket Anda:
Pada gambar; sebutkan crossorigin:
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.
sumber
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:
Memenangkan:
Saya harap ini menyelamatkan seseorang dari mencabut rambut.
sumber
Atur konfigurasi CORS di pengaturan Izin untuk Anda S3 bucket
S3 menambahkan header CORS hanya ketika permintaan http memiliki
Origin
header.CloudFront tidak meneruskan
Origin
header secara defaultAnda perlu memasukkan daftar putih
Origin
header di pengaturan Perilaku untuk CloudFront Distribution Anda.sumber
Saya memperbaikinya menulis yang berikut ini:
Kenapa
<AllowedHeader>*</AllowedHeader>
berhasil dan<AllowedHeader>Authorization</AllowedHeader>
tidak?sumber
"jawaban" fwuensche adalah corret untuk mendirikan CDN; melakukan ini, saya menghapus MaxAgeSeconds.
sumber
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.
sumber
Konfigurasi ini memecahkan masalah bagi saya:
sumber
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.
Masalah 403 sekarang telah diatasi. Aggrr sakit sekali!
sumber
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
atau jika Anda ingin menyertakan semua subdomain yang mungkin:
sumber
Di bawah ini adalah konfigurasi dan tidak masalah untuk saya. Saya harap ini akan membantu menyelesaikan masalah Anda di AWS S3.
sumber
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.
sumber
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:sumber
Pertama, aktifkan CORS di bucket S3 Anda. Gunakan kode ini sebagai panduan:
2) Jika masih tidak berfungsi, pastikan juga menambahkan "crossorigin" dengan nilai "*" ke tag img Anda. Letakkan ini di file html Anda:
sumber
Untuk apa nilainya, saya memiliki masalah serupa - ketika mencoba untuk menambahkan asal yang diizinkan spesifik (tidak
*
).Ternyata saya harus memperbaiki
untuk
(perhatikan slah terakhir di URL)
Semoga ini bisa membantu seseorang
sumber