Bahasa Indonesia

Video & subtitle · Pengunduh Media Langsung

Mengapa CORS dapat memblokir unduhan langsung di browser, dan apa artinya

· Cara kerjanya

kor http unduhan

Permintaan browser memenuhi batas respons lintas asal di host media
Ilustrasi vektor ToolAcre asli

Pengunduh khusus browser berada dalam kebijakan asal yang sama. Posting ini menjelaskan apa itu CORS, mengapa beberapa host mengizinkan pengambilan dan yang lainnya tidak, dan mengapa alat tanpa server relai tidak dapat mengatasinya.

Tautan berfungsi di tab baru tetapi gagal di alat — teka-teki yang dibuat oleh kesalahan CORS bagi pengguna

Enklosur podcast mungkin diputar saat dimasukkan di bilah alamat namun gagal saat halaman mencoba membacanya dengan Ambil. Navigasi dan pembacaan skrip adalah kekuatan browser yang berbeda. Yang pertama menampilkan sumber daya; yang kedua dapat mengekspos byte-nya ke kode yang berjalan di sumber lain.

Direct Media Downloader memerlukan kekuatan kedua karena ia membaca potongan respons, melaporkan kemajuan, membuat Blob, dan menawarkan penyimpanan bernama. Jika host media tidak ikut serta dalam pembacaan lintas asal tersebut, browser berhenti JavaScript menerima respons meskipun navigasi biasa mungkin masih berfungsi. Perbedaan yang sama menjelaskan mengapa menyalin alamat ke aplikasi lain dapat menghasilkan hasil yang berbeda tanpa aplikasi mana pun mengubah file jarak jauh.

Kebijakan asal yang sama dalam satu paragraf — mengapa halaman di toolacre.com tidak dapat dengan bebas membaca byte yang disajikan dari asal lain

Asal menggabungkan skema, nama host, dan port. Oleh karena itu, laman disajikan dari ToolAcre dan file disajikan dari penerbit CDN biasanya memiliki asal yang berbeda. Kebijakan asal yang sama mencegah skrip asal dari membaca respons asal lain secara bebas, sehingga melindungi data yang terekspos melalui akses browser sekitar.

Pembatasan ini diberlakukan oleh browser, bukan oleh peringatan yang ditemukan di pengunduh. Ini berlaku sebelum kode aplikasi dapat memeriksa header atau potongan isi yang dilindungi. Host sumber mungkin masih menerima permintaan, jadi pembacaan yang diblokir tidak boleh digambarkan sebagai “tidak ada yang dihubungi.” Batasan asal berlaku untuk tanggapan yang dapat dibaca, tidak hanya untuk ekstensi file, jadi akhiran `.mp3` yang tampak jelas tidak memberikan pengecualian khusus pada skrip halaman.

Apa yang dilakukan Access-Control-Allow-Origin — bagaimana host file, bukan alat, yang memutuskan apakah browser boleh menyerahkan byte

Server jarak jauh dapat ikut serta dengan mengembalikan header `Access-Control-Allow-Origin` yang sesuai. Keputusan itu termasuk dalam konfigurasi host file. ToolAcre tidak dapat menambahkan header ke respons orang lain, dan opsi permintaan tidak dapat memberikan izin yang ditahan oleh server penerima.

Header permisif memungkinkan browser menampilkan respons ke halaman; itu tidak menyatakan hak cipta, keamanan, atau kualitas media. Demikian pula, header yang hilang tidak membuktikan URL rusak. Ini hanya berarti skrip lintas asal ini tidak memiliki izin untuk membaca apa yang dikembalikan oleh server. Administrator host harus menguji asal permintaan dan metode yang ingin mereka dukung, daripada menambahkan header permisif secara membabi buta ke seluruh namespace penyimpanan.

Pembacaan lintas asal yang diblokir dan mengapa skrip tidak menerima respons yang dapat disimpan

Pengunduh menggunakan mode Ambil CORS biasa, bukan `no-cors`. Pada pembacaan lintas asal yang ditolak, Pengambilan menolak dan kode aplikasi tidak menerima header maupun isi yang dapat digunakan. Alat ini melaporkan kategori gabungan `CORS_OR_NETWORK` karena browser sengaja tidak menampilkan detail yang cukup untuk membedakan CORS dari setiap kegagalan transportasi.

Respons buram termasuk dalam permintaan `no-cors` eksplisit, namun mode tersebut tidak akan menyelesaikan tugas ini: JavaScript tidak dapat memeriksa isi buram dan mengubahnya menjadi Blob yang diinginkan. Oleh karena itu, implementasinya gagal secara jujur, alih-alih memperoleh respons yang tidak terbaca dan berpura-pura dapat menyelamatkannya. Karena aplikasi tidak pernah mendapatkan byte tersembunyi tersebut, aplikasi tidak dapat menghitung kemajuan secara jujur, menyimpulkan nama file dari header yang dilindungi, atau membuat objek berguna URL dari byte tersebut.

Contoh praktis: membaca permintaan yang gagal di panel jaringan — menemukan header yang hilang dan mengonfirmasi bahwa tidak ada server relai yang dihubungi

Buka panel Jaringan, simpan log, dan tekan Periksa tautan sekali. Baris HEAD yang dicoba mengidentifikasi tujuan dan mungkin menampilkan diagnosis CORS browser. Periksa header respons jika tersedia; tidak adanya header yang mengizinkan menjelaskan mengapa kode halaman tidak menerima ukuran atau tipe MIME yang diiklankan.

Pemeriksaan yang gagal sudah menjadi bukti bahwa permintaan sebenarnya telah dilakukan. Tidak ada baris ToolAcre API yang membawa URL yang ditempelkan dan tidak ada permintaan relai kedua. Jika host mengizinkan HEAD dengan buruk, Download mungkin masih berperilaku berbeda karena menggunakan GET, namun tidak ada jalur yang secara diam-diam mengubah arsitektur. Kata-kata di konsol bervariasi antar browser, jadi pertahankan bukti baris dan header yang gagal daripada bergantung pada frasa satu vendor untuk laporan operasional.

Mengapa alat ini tidak melakukan rute di sekitarnya — proxy berarti mengirimkan tautan Anda ke server, dan hal inilah yang dijanjikan oleh alat tersebut untuk tidak dilakukan.

Proksi dapat mengambil sisi server file dan mengembalikannya dari titik akhir asal yang sama, sehingga menghindari pembacaan lintas asal browser. Ini juga akan mengungkapkan tautan dan setiap byte yang diteruskan ke operator tersebut, menimbulkan bandwidth, dan menciptakan permukaan pengambilan yang sewenang-wenang. ToolAcre sengaja tidak memiliki titik akhir seperti itu.

Penggantian yang disarankan oleh antarmuka adalah tindakan Simpan tautan sebagai asli browser, jika tersedia. Yaitu penanganan navigasi atau pengunduhan, bukan pembacaan skrip halaman. Saran tersebut tidak melemahkan kebijakan host, mengautentikasi pengunjung, atau mengubah aliran yang dilindungi menjadi file langsung. Penolakan arsitektural tersebut juga mencegah ToolAcre mengumpulkan salinan, log akses, atau hak istimewa pengambilan keluar semata-mata untuk mengubah penolakan browser menjadi kesuksesan nyata.

Apa yang tidak tercakup dalam hal ini — CORS tidak sama dengan 403, dinding masuk, atau URL bertanda tangan yang telah kedaluwarsa

Kegagalan CORS bukanlah HTTP 403, meskipun keduanya dapat menghentikan alur kerja. 403 adalah status respons yang dipilih tuan rumah; tanda tangan yang kedaluwarsa dapat menyebabkannya. Dinding login memerlukan kredensial yang dihilangkan alat ini. Gangguan jaringan, kegagalan DNS, dan masalah sertifikat dapat menyebabkan penolakan Ambil pada browser.

Oleh karena itu diagnosis harus menggunakan panel Jaringan dan Konsol secara bersamaan daripada memperlakukan setiap kegagalan sebagai header yang hilang. ToolAcre melaporkan status HTTP yang diketahui ketika respons yang dapat dibaca tiba, namun menolak menebak ketika browser hanya menyediakan pengecualian berbentuk transport. Memisahkan kategori ini akan mengarahkan perbaikan dengan benar: konfigurasikan CORS untuk objek publik resmi, segarkan tautan yang kedaluwarsa, masuk melalui penyedia, atau perbaiki konektivitas.

Kesimpulan: CORS adalah keputusan pihak host — bagaimana Pengunduh Media Langsung melaporkannya dengan jujur ​​alih-alih secara diam-diam kembali ke server

CORS dikendalikan di host media. Pengunduh khusus browser dapat mematuhi pilihan itu, menjelaskannya, dan berhenti; itu tidak dapat mengesampingkan pilihan dari kode klien. Batasan ini justru merepotkan karena mencegah halaman sewenang-wenang menjadi pembaca lintas situs universal.

Gunakan kontrol unduhan yang disediakan host, minta file resmi berkemampuan CORS, atau gunakan tautan Simpan asli jika diperlukan. Direct Media Downloader menepati janjinya dengan mengungkap penolakan dan mempertahankan jalur browser-ke-host langsung, bukan dengan menyembunyikan server di balik tombol yang lebih sukses. Oleh karena itu, hasil yang sukses harus berasal dari host yang kooperatif atau fasilitas browser sah lainnya, tidak pernah dari menyembunyikan teks kesalahan sambil tetap mempertahankan pembacaan yang ditolak.