Bahasa Melayu

Video & sari kata · Pemuat Turun Media Langsung

Mengapa CORS boleh menyekat muat turun terus dalam pelayar dan maksudnya

· Bagaimana ia berfungsi

kor http muat turun

Permintaan pelayar memenuhi sempadan tindak balas rentas asal di hos media
Ilustrasi vektor ToolAcre asal

Pemuat turun pelayar sahaja hidup dalam dasar asal yang sama. Siaran ini menerangkan maksud CORS, sebab sesetengah hos membenarkan pengambilan dan yang lain tidak, dan sebab alat tanpa pelayan geganti tidak boleh berfungsi di sekelilingnya.

Pautan berfungsi dalam tab baharu tetapi gagal dalam alat — teka-teki yang dibuat oleh ralat CORS untuk pengguna

Lampiran podcast mungkin dimainkan apabila dimasukkan dalam bar alamat namun gagal apabila halaman cuba membacanya dengan Ambil. Navigasi dan membaca skrip adalah kuasa pelayar yang berbeza. Yang pertama memaparkan sumber; yang kedua boleh mendedahkan baitnya kepada kod yang dijalankan pada asal lain.

Direct Media Downloader memerlukan kuasa kedua kerana ia membaca bahagian respons, melaporkan kemajuan, membina Blob dan menawarkan simpanan bernama. Apabila hos media tidak mengikut serta dalam bacaan silang asal itu, pelayar menghentikan JavaScript daripada menerima respons walaupun navigasi biasa mungkin masih berfungsi. Perbezaan yang sama menjelaskan mengapa menyalin alamat ke aplikasi lain boleh menghasilkan hasil yang berbeza tanpa mana-mana aplikasi telah menukar fail jauh.

Dasar asal yang sama dalam satu perenggan — mengapa halaman pada toolacre.com tidak boleh membaca bait yang disampaikan dari asal lain secara bebas

Asal menggabungkan skema, nama hos dan port. Halaman yang disampaikan daripada ToolAcre dan fail yang disampaikan daripada penerbit CDN oleh itu biasanya mempunyai asal yang berbeza. Dasar asal yang sama menghalang satu skrip asal daripada membaca respons asal yang lain secara bebas, melindungi data yang terdedah melalui akses pelayar ambien.

Sekatan ini dikuatkuasakan oleh pelayar, bukan oleh amaran yang dicipta dalam pemuat turun. Ia digunakan sebelum kod aplikasi boleh memeriksa pengepala atau ketulan badan yang dilindungi. Hos sumber mungkin masih menerima permintaan, jadi bacaan yang disekat tidak boleh diterangkan sebagai "tiada apa-apa yang dihubungi". Sempadan asal digunakan pada respons yang boleh dibaca, bukan sahaja pada sambungan fail, jadi akhiran `.mp3` yang nampak jelas tidak memberikan pengecualian khas kepada skrip halaman.

Apa yang Access-Control-Allow-Origin lakukan — bagaimana hos fail, bukan alat, memutuskan sama ada pelayar boleh menyerahkan bait

Pelayan jauh boleh ikut serta dengan mengembalikan pengepala `Access-Control-Allow-Origin` yang sesuai. Keputusan itu adalah milik konfigurasi hos fail. ToolAcre tidak boleh menambah pengepala pada respons orang lain dan pilihan permintaan tidak boleh memberikan kebenaran pelayan penerima yang ditahan.

Pengepala permisif membolehkan pelayar mendedahkan respons kepada halaman; ia tidak memperakui hak cipta, keselamatan atau kualiti media. Begitu juga, pengepala yang hilang tidak membuktikan URL rosak. Ini sahaja bermakna skrip silang asal ini tidak mempunyai kebenaran untuk membaca perkara yang dikembalikan oleh pelayan. Pentadbir hos harus menguji asal permintaan yang tepat dan kaedah yang mereka ingin sokong, dan bukannya menambah pengepala permisif secara membuta tuli pada keseluruhan ruang nama storan.

Bacaan asal silang yang disekat dan sebab skrip tidak menerima respons yang boleh disimpan

Pemuat turun menggunakan CORS-mod biasa Ambil daripada `no-cors`. Pada bacaan silang asal yang ditolak, Ambil menolak dan kod aplikasi tidak menerima pengepala yang boleh digunakan mahupun badan. Alat ini melaporkan gabungan kategori `CORS_OR_NETWORK` kerana pelayar dengan sengaja tidak mendedahkan butiran yang mencukupi untuk membezakan CORS daripada setiap kegagalan pengangkutan.

Respons legap tergolong dalam permintaan `no-cors` yang eksplisit, tetapi mod itu tidak akan menyelesaikan tugas ini: JavaScript tidak boleh memeriksa badan legap dan mengubahnya menjadi Blob yang dimaksudkan. Oleh itu pelaksanaannya gagal secara jujur ​​dan bukannya memperoleh respons yang tidak boleh dibaca dan berpura-pura ia boleh menyelamatkannya. Oleh kerana aplikasi tidak pernah memperoleh bait tersembunyi tersebut, ia tidak boleh mengira kemajuan dengan benar, membuat kesimpulan nama fail daripada pengepala yang dilindungi atau mencipta objek berguna URL daripadanya.

Contoh yang berjaya: membaca permintaan yang gagal dalam panel rangkaian — mengesan pengepala yang hilang dan mengesahkan bahawa tiada pelayan geganti telah dihubungi

Buka panel Rangkaian, simpan log, dan tekan pautan Semak sekali. Baris percubaan HEAD mengenal pasti destinasi dan mungkin menunjukkan diagnosis CORS pelayar. Periksa tajuk respons jika tersedia; ketiadaan pengepala membenarkan menerangkan sebab kod halaman tidak menerima saiz yang diiklankan atau jenis MIME.

Semakan yang gagal sudah menjadi bukti bahawa permintaan sebenar telah dicuba. Tiada baris ToolAcre API yang membawa URL yang ditampal dan tiada permintaan geganti kedua. Jika hos membenarkan HEAD dengan buruk, Muat turun mungkin masih berkelakuan berbeza kerana ia menggunakan GET, tetapi tiada laluan menukar seni bina secara senyap. Kata-kata konsol berbeza-beza antara pelayar, jadi simpan bukti baris dan pengepala yang gagal dan bukannya bergantung pada frasa satu vendor untuk laporan operasi.

Mengapa alat itu tidak menghalakannya — proksi bermakna menghantar pautan anda ke pelayan, iaitu perkara yang betul-betul dijanjikan oleh alat itu untuk tidak dilakukan

Seorang proksi boleh mengambil bahagian pelayan fail dan mengembalikannya dari titik akhir asal yang sama, mengelakkan bacaan silang asal pelayar. Ia juga akan mendedahkan pautan dan setiap bait yang disampaikan kepada operator itu, menanggung lebar jalur dan mencipta permukaan pengambilan sewenang-wenangnya. ToolAcre sengaja tidak mempunyai titik akhir sedemikian.

Sandaran yang dicadangkan oleh antara muka ialah pautan Simpan sebagai tindakan asli pelayar, jika tersedia. Itu adalah navigasi atau pengendalian muat turun dan bukannya membaca skrip halaman. Cadangan itu tidak melemahkan dasar hos, mengesahkan pelawat atau menukar strim yang dilindungi menjadi fail langsung. Penolakan seni bina itu juga menghalang ToolAcre daripada mengumpul salinan, log akses atau keistimewaan pengambilan keluar semata-mata untuk menjadikan penafian pelayar menjadi kejayaan yang nyata.

Perkara yang tidak dilindungi ini — CORS tidak sama dengan 403, dinding log masuk atau URL yang ditandatangani tamat tempoh

CORS kegagalan bukan HTTP 403, walaupun kedua-duanya boleh menghentikan aliran kerja. 403 ialah status respons yang dipilih oleh hos; tandatangan tamat tempoh boleh menyebabkannya. Dinding log masuk memerlukan bukti kelayakan yang ditinggalkan oleh alat ini. Gangguan rangkaian, kegagalan DNS dan masalah sijil boleh berkongsi penolakan Ambil generik pelayar.

Oleh itu, diagnosis harus menggunakan panel Rangkaian dan Konsol bersama-sama dan bukannya menganggap setiap kegagalan sebagai pengepala yang hilang. ToolAcre melaporkan status HTTP yang diketahui apabila respons yang boleh dibaca tiba, tetapi ia enggan meneka apabila pelayar sahaja membekalkan pengecualian berbentuk pengangkutan. Mengekalkan kategori ini berasingan mengarahkan remedi dengan betul: konfigurasikan CORS untuk objek awam yang dibenarkan, muat semula pautan yang telah tamat tempoh, log masuk melalui pembekal atau betulkan ketersambungan.

Bawa pulang: CORS ialah keputusan pihak hos — cara Pemuat Turun Media Langsung melaporkannya secara jujur ​​dan bukannya kembali ke pelayan secara senyap

CORS dikawal di hos media. Pemuat turun pelayar sahaja boleh mematuhi pilihan itu, menerangkannya dan berhenti; ia tidak boleh mengatasi pilihan daripada kod klien. Sempadan ini menyusahkan kerana ia menghalang halaman sewenang-wenangnya daripada menjadi pembaca merentas tapak sejagat.

Gunakan kawalan muat turun yang disediakan oleh hos, minta fail dibenarkan yang didayakan CORS atau gunakan pautan Simpan asli mengikut kesesuaian. Direct Media Downloader menepati janjinya dengan mendedahkan penolakan dan mengekalkan laluan pelayar ke hos terus, bukan dengan menyembunyikan pelayan di sebalik butang yang lebih berjaya. Oleh itu, hasil yang berjaya mesti datang daripada hos koperasi atau kemudahan pelayar sah yang berbeza, tidak sekali-kali daripada menyekat teks ralat sambil mengekalkan bacaan yang dinafikan yang sama.