Saat Anda mengakses file di Object Storage Service (OSS) melalui browser, browser mungkin memaksa unduhan alih-alih menampilkan pratinjau online. Topik ini membantu Anda mengidentifikasi penyebabnya dengan cepat dan mengonfigurasi perilaku pratinjau yang sesuai.
Pemecahan masalah
Jika file dipaksa diunduh, gunakan perintah curl untuk memeriksa header respons dari URL file tersebut. Hal ini memungkinkan Anda mengidentifikasi akar permasalahan secara cepat.
Tujuan: Memeriksa header respons untuk bidang tertentu yang memicu unduhan paksa.
Prosedur: Buka terminal atau antarmuka baris perintah di komputer Anda, lalu jalankan perintah berikut. Ganti <your file URL> dengan URL aktual file tersebut.
curl -I "<your file URL>"Analisis hasil: Setelah menjalankan perintah, periksa bidang x-oss-force-download dan Content-Disposition dalam header respons.
Jika header respons berisi
x-oss-force-download: true: Kebijakan keamanan OSS untuk nama domain default telah dipicu. Untuk solusinya, lihat Skenario 1: Unduhan paksa akibat kebijakan keamanan OSS.Jika header respons berisi
Content-Disposition: attachmenttetapi tidak berisix-oss-force-download: Metadata file diatur untuk unduhan sebagai lampiran. Untuk solusinya, lihat Skenario 2: Unduhan paksa akibat pengaturan metadata file.Jika header respons tidak berisi kedua bidang tersebut tetapi file tetap diunduh: Browser kemungkinan besar tidak dapat mengenali jenis file tersebut. Untuk solusinya, lihat Skenario 3: Browser tidak dapat menampilkan pratinjau file karena Content-Type yang salah.
Solusi
Skenario 1: Unduhan paksa akibat kebijakan keamanan OSS
Skenario ini terjadi ketika header respons berisi x-oss-force-download: true.
Penyebab: Untuk mencegah risiko keamanan yang dapat terjadi saat file seperti HTML dieksekusi langsung di browser, OSS memaksa unduhan. Perilaku ini berlaku ketika Anda menggunakan OSS default domain name atau acceleration endpoint untuk mengakses bucket yang dibuat setelah tanggal tertentu. Untuk wilayah dan jenis file tertentu, OSS menambahkan header respons
x-oss-force-download: truedanContent-Disposition: attachment.Untuk informasi lebih lanjut tentang kebijakan tersebut, lihat Lampiran: Referensi cepat aturan unduhan paksa nama domain OSS di akhir topik ini.
Solusi: Gunakan nama domain kustom untuk mengakses sumber daya OSS
Prosedur:
Menyambungkan nama domain kustom ke bucket: Masuk ke Konsol OSS. Di halaman Domain Names untuk bucket target, sambungkan nama domain kustom Anda yang telah memiliki Pendaftaran ICP.
Konfigurasikan resolusi CNAME: Buka penyedia layanan resolusi nama domain Anda, seperti Alibaba Cloud DNS. Tambahkan rekaman CNAME untuk nama domain kustom Anda yang mengarah ke alamat CNAME yang disediakan oleh OSS.
Akses file dengan nama domain baru: Setelah konfigurasi selesai, gunakan URL nama domain kustom Anda untuk mengakses file tersebut sehingga file dapat ditampilkan dalam pratinjau online.
Jika Anda memerlukan akselerasi akses global, Anda dapat menyambungkan nama domain kustom Anda ke acceleration endpoint. Hal ini melewati kebijakan unduhan paksa dan meningkatkan performa.
Untuk informasi lebih lanjut, lihat Akses OSS melalui nama domain kustom.
Skenario 2: Unduhan paksa akibat pengaturan metadata file
Skenario ini terjadi ketika header respons berisi Content-Disposition: attachment tetapi tidak berisi bidang x-oss-force-download.
Penyebab: Bidang
Content-Dispositiondalam metadata file secara eksplisit diatur keattachment. Pengaturan ini memberi tahu browser untuk mengunduh file sebagai lampiran alih-alih menampilkannya inline. Pengaturan ini sering digunakan untuk tautan unduhan sementara. Jika tidak dihapus, semua upaya selanjutnya untuk mengakses file akan memicu unduhan.Solusi: Ubah metadata
Content-Dispositionfile menjadiinlineUbah di konsol
Masuk ke Konsol OSS. Buka halaman dari bucket target.
Temukan objek target. Di kolom Actions, pilih .
Pada kotak dialog yang muncul, temukan bidang
Content-Dispositiondan ubah nilainya menjadiinline.Klik OK untuk menyimpan pengaturan.
Ubah secara batch menggunakan ossutil
# Mengatur Content-Disposition file tertentu menjadi inline ossutil set-meta oss://your-bucket/your-object.pdf Content-Disposition:inline
Skenario 3: Browser tidak dapat menampilkan pratinjau file karena Content-Type yang salah
Skenario ini terjadi ketika header respons normal, tetapi browser tetap mengunduh file tersebut.
Penyebab: Metadata
Content-Type(juga dikenal sebagai tipe Multipurpose Internet Mail Extensions (MIME)) file tersebut salah atau tidak ada. Misalnya, jikaContent-Typefile citra JPG salah diatur menjadiapplication/octet-stream, browser akan mengunduh file tersebut karena tidak dapat mengenali jenis file tersebut.Solusi: Atur
Content-Typeyang benar untuk file tersebutUbah di konsol
Masuk ke Konsol OSS. Buka halaman dari bucket target.
Temukan objek target. Di kolom Actions, pilih .
Pada kotak dialog yang muncul, temukan bidang
Content-Typedan ubah nilainya menjadi nilai yang benar.Klik OK untuk menyimpan pengaturan.
Contoh Content-Type yang benar untuk jenis file umum:
Citra:
image/jpeg,image/png,image/gif,image/webpVideo:
video/mp4Dokumen PDF:
application/pdfFile HTML:
text/htmlTeks biasa:
text/plain
Ubah secara batch menggunakan ossutil
# Mengatur Content-Type file tertentu menjadi image/jpeg ossutil set-meta oss://your-bucket/your-object.jpg Content-Type:image/jpeg
Skenario dan solusi tambahan
Perubahan metadata tidak berlaku: Periksa cache CDN
Jika Anda menggunakan Alibaba Cloud Content Delivery Network (CDN) untuk mempercepat akses ke OSS, perubahan metadata file—seperti Content-Type atau Content-Disposition—mungkin tidak langsung berlaku karena titik keberadaan (PoP) CDN masih menyajikan versi cache dengan konfigurasi lama.
Solusi: Masuk ke konsol CDN dan purge cache untuk URL file yang telah dimodifikasi. Untuk informasi lebih lanjut, lihat Refresh dan prefetch sumber daya.
Cara memaksa file diunduh alih-alih ditampilkan dalam pratinjau
Jika Anda ingin selalu memaksa unduhan saat pengguna mengakses file, Anda dapat menggunakan salah satu metode berikut.
Metode 1 (Direkomendasikan): Konfigurasikan di OSS. Seperti dijelaskan dalam Skenario 2, atur metadata
Content-Dispositionfile menjadiattachment. Metode ini ideal untuk menerapkan pengaturan permanen pada satu file.Metode 2: Konfigurasikan di CDN. Jika Anda menggunakan CDN, Anda dapat menambahkan header
Content-Disposition: attachmentdi konsol CDN. Anda dapat mengonfigurasi ini sebagai header respons outbound di Cache Settings. Metode ini tidak memerlukan perubahan pada file sumber di OSS dan berguna untuk konfigurasi fleksibel secara batch berdasarkan path atau jenis file tertentu.
Browser tidak mendukung pratinjau format file tersebut
Browser utama tidak mendukung pratinjau online untuk beberapa format file profesional, seperti .psd, .ai, dan .sketch. Dalam kasus ini, browser akan mengunduh file meskipun konfigurasi OSS dan CDN sudah benar.
Solusi: Anda dapat menginstal ekstensi browser yang mendukung pratinjau format file tersebut atau menggunakan layanan pratinjau dokumen profesional, seperti WebOffice Online Preview.
Lampiran: Referensi cepat aturan unduhan paksa nama domain OSS
Jika file dipaksa diunduh, periksa nilai bidang x-oss-ec dalam header respons HTTP. Kemudian, Anda dapat menggunakan tabel berikut untuk mengidentifikasi penyebabnya.
Kode error (x-oss-ec): ID unik aturan yang menyebabkan unduhan.
Waktu pembuatan bucket: Saat Anda menggunakan nama domain default, kebijakan biasanya hanya berlaku untuk bucket yang dibuat setelah waktu ini. Bucket lama yang dibuat sebelum waktu ini biasanya tidak terpengaruh.
Waktu pengaktifan akselerasi transfer: Setelah Anda mengaktifkan akselerasi transfer, kebijakan biasanya hanya berlaku untuk bucket yang diaktifkan akselerasi transfer setelah waktu ini. Bucket yang diaktifkan akselerasi transfer sebelum waktu ini biasanya tidak terpengaruh.
Anda dapat melewati semua aturan unduhan paksa dengan menggunakan nama domain kustom.
Nama domain default OSS
Waktu penerapan kebijakan | Wilayah bucket | Objek yang terpengaruh | Jenis file yang terpengaruh | Kode error |
08:00, 28 September 2018 | China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Shenzhen), China (Chengdu) | Bucket yang dibuat setelah waktu efektif | text/html | |
12:00, 25 September 2019 | China (Nanjing - Local Region - Phasing Out) China (Ulanqab), China (Heyuan), China (Guangzhou), US (Silicon Valley), US (Virginia), Korea Selatan (Seoul), Singapura, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Filipina (Manila), Thailand (Bangkok), UK (London), UAE (Dubai) | Bucket yang dibuat setelah waktu efektif | text/html | |
14:00, 25 November 2019 | China (Hong Kong) | Bucket yang dibuat setelah waktu efektif | text/html | |
17:00, 23 September 2019 | China (Hohhot) | Bucket yang dibuat setelah waktu efektif | image/jpeg, image/gif, image/tiff, image/png, image/webp, image/svg+xml, image/bmp, image/x-ms-bmp, image/x-cmu-raster, image/exr, image/x-icon, image/heic, text/html | |
11:00, 24 September 2019 | China (Qingdao), China (Chengdu) | Bucket yang dibuat setelah waktu efektif | image/jpeg, image/gif, image/tiff, image/png, image/webp, image/svg+xml, image/bmp, image/x-ms-bmp, image/x-cmu-raster, image/exr, image/x-icon, image/heic, text/html | |
17:00, 24 September 2019 | China (Zhangjiakou) | Bucket yang dibuat setelah waktu efektif | image/jpeg, image/gif, image/tiff, image/png, image/webp, image/svg+xml, image/bmp, image/x-ms-bmp, image/x-cmu-raster, image/exr, image/x-icon, image/heic, text/html | |
17:00, 29 September 2019 | China (Shanghai), China (Shenzhen) | Bucket yang dibuat setelah waktu efektif | image/jpeg, image/gif, image/tiff, image/png, image/webp, image/svg+xml, image/bmp, image/x-ms-bmp, image/x-cmu-raster, image/exr, image/x-icon, image/heic, text/html | |
18:00, 29 September 2019 | China (Beijing) | Bucket yang dibuat setelah waktu efektif | image/jpeg, image/gif, image/tiff, image/png, image/webp, image/svg+xml, image/bmp, image/x-ms-bmp, image/x-cmu-raster, image/exr, image/x-icon, image/heic, text/html | |
15:00, 30 September 2019 | China (Hangzhou) | Bucket yang dibuat setelah waktu efektif | image/jpeg, image/gif, image/tiff, image/png, image/webp, image/svg+xml, image/bmp, image/x-ms-bmp, image/x-cmu-raster, image/exr, image/x-icon, image/heic, text/html | |
00:00, 09 Oktober 2022 | Bucket yang dibuat oleh pengguna yang pertama kali mengaktifkan OSS setelah pukul 00:00 pada 9 Oktober 2022 | |||
10:00, 22 Desember 2025 | China (Ulanqab), China (Heyuan), China (Guangzhou), China (Nanjing - Local Region - Phasing Out) | Bucket yang dibuat setelah waktu efektif | image/jpeg, image/gif, image/tiff, image/png, image/webp, image/svg+xml, image/bmp, image/x-ms-bmp, image/x-cmu-raster, image/exr, image/x-icon, image/heic |
Titik akhir percepatan
Waktu efektif | Wilayah bucket | Objek yang terpengaruh | Jenis file yang terpengaruh | Kode error |
00:00, 31 Desember 2020 | Bucket yang diaktifkan akselerasi transfer setelah waktu efektif | text/html | ||
12:00, 07 Januari 2021 | UAE (Dubai) | Bucket yang diaktifkan akselerasi transfer setelah waktu efektif | ||
18:00, 07 Januari 2021 | Malaysia (Kuala Lumpur), UK (London) | Bucket yang diaktifkan akselerasi transfer setelah waktu efektif | ||
18:00, 08 Januari 2021 | Jepang (Tokyo), Indonesia (Jakarta), Jerman (Frankfurt) | Bucket yang diaktifkan akselerasi transfer setelah waktu efektif | ||
12:00, 14 Januari 2021 | US (Silicon Valley), US (Virginia), Singapura | Bucket yang diaktifkan akselerasi transfer setelah waktu efektif | ||
00:00, 16 Januari 2021 | China (Hong Kong) | Bucket yang diaktifkan akselerasi transfer setelah waktu efektif | ||
00:00, 09 Oktober 2022 | Bucket yang dibuat oleh pengguna yang pertama kali mengaktifkan OSS setelah pukul 00:00 pada 9 Oktober 2022 | |||
00:00, 01 Februari 2023 | Korea Selatan (Seoul), Filipina (Manila), Thailand (Bangkok) | Bucket yang diaktifkan akselerasi transfer setelah waktu efektif |