Saat Perlindungan hotlink diaktifkan pada domain CDN Anda, permintaan yang tidak lolos validasi header Referer akan ditolak dengan kode status 403. Topik ini menjelaskan cara mendiagnosis dan mengatasi error 403 akibat salah konfigurasi Perlindungan hotlink.
Gejala
Setelah mengonfigurasi Perlindungan hotlink untuk domain yang dipercepat CDN, akses ke resource melalui domain tersebut menghasilkan error 403. Header respons X-Tengine-Error berisi nilai denied by Referer ACL.
Penyebab
Perlindungan hotlink bekerja dengan memeriksa header Referer dari permintaan masuk terhadap daftar putih atau blacklist yang dikonfigurasi pada domain CDN Anda. Error 403 terjadi ketika header Referer tidak sesuai dengan aturan yang telah ditetapkan. Hal ini umumnya terjadi dalam salah satu skenario berikut:
Referer mismatch: Permintaan menyertakan header
Referer, tetapi domain pengirim tidak termasuk dalam daftar putih Perlindungan hotlink.Empty Referer blocked: Permintaan tidak menyertakan header
Referer(misalnya, saat mengakses URL langsung dari bilah alamat browser), dan konfigurasi Perlindungan hotlink tidak mengizinkan nilai Referer kosong.
Solusi
Pertama, identifikasi apakah error 403 disebabkan oleh ketidaksesuaian Referer atau karena Referer kosong diblokir. Kemudian, terapkan perbaikan yang sesuai.
Langkah 1: Identifikasi penyebab
Uji dengan header Referer: Jalankan perintah curl berikut. Ganti
demo.aliyundoc.comdengan domain pengirim sebenarnya danexample.aliyundoc.comdengan domain Anda yang dipercepat CDN.curl -voa -e "http://demo.aliyundoc.com" http://example.aliyundoc.comJika respons mengembalikan error 403 dan header
X-Tengine-Errormenampilkandenied by Referer ACL, berarti domain Referer tidak ada dalam daftar putih Perlindungan hotlink. Lihat perbaikan di bagian Fix a Referer mismatch.
Uji tanpa header Referer: Jalankan perintah curl berikut tanpa flag
-e.curl -voa http://example.aliyundoc.comJika respons mengembalikan error 403 dan header
X-Tengine-Errormenampilkandenied by Referer ACL, berarti konfigurasi Perlindungan hotlink tidak mengizinkan permintaan dengan Referer kosong. Lihat perbaikan di bagian Fix empty Referer blocked.
Uji di browser: Buka URL yang dipercepat CDN langsung di bilah alamat browser dan buka DevTools browser (F12). Periksa tab Network. Jika permintaan tidak menyertakan header
Refererdan responsnya 403, berarti konfigurasi Perlindungan hotlink tidak mengizinkan nilai Referer kosong.
Langkah 2a: Perbaiki ketidaksesuaian Referer
Jika error 403 terjadi karena domain Referer tidak sesuai dengan daftar putih, tambahkan domain pengirim ke daftar putih Perlindungan hotlink:
Masuk ke Alibaba Cloud CDN console.
Di panel navigasi kiri, pilih Domain Names.
Temukan domain target dan klik Manage.
Pilih Access Control > Referer Black/Whitelist > Modify.
Verifikasi bahwa Whitelist dipilih. Tambahkan domain pengirim (misalnya,
demo.aliyundoc.com) ke daftar putih, lalu klik OK.
Langkah 2b: Perbaiki pemblokiran Referer kosong
Jika error 403 terjadi karena permintaan tanpa header Referer diblokir, izinkan akses dengan Referer kosong:
Masuk ke Alibaba Cloud CDN console.
Di panel navigasi kiri, pilih Domain Names.
Temukan domain target dan klik Manage.
Pilih Access Control > Referer Black/Whitelist > Modify.
Pilih Allow resource URL access from browsers, lalu klik OK.
Catatan: Mengizinkan akses dengan Referer kosong berarti siapa pun yang memasukkan URL resource langsung di browser dapat mengakses resource tersebut. Hal ini dapat mengurangi efektivitas Perlindungan hotlink. Aktifkan opsi ini hanya jika diperlukan.