Saat Anda mengakses objek OSS melalui browser, objek tersebut mungkin diunduh alih-alih ditampilkan secara inline. Panduan ini membantu Anda mendiagnosis penyebabnya dan mengonfigurasi perilaku pratinjau yang sesuai.
Pemecahan Masalah
Jika objek diunduh alih-alih ditampilkan, jalankan perintah curl untuk memeriksa header respons dan mengidentifikasi penyebabnya.
Tujuan: Memastikan apakah header respons berisi bidang yang memaksa unduhan.
Langkah-langkah: Jalankan perintah berikut di terminal Anda. Ganti <your-object-url> dengan URL objek Anda.
curl -I "<your object URL>"
Analisis hasil: Periksa respons untuk keberadaan bidang x-oss-force-download dan Content-Disposition.
-
Jika header respons berisi
x-oss-force-download: true: Kebijakan keamanan untuk nama domain default OSS telah dipicu. Untuk solusinya, lihat Skenario 1: Unduhan paksa akibat kebijakan keamanan OSS. -
Jika header respons tidak berisi
x-oss-force-downloadtetapi berisiContent-Disposition: attachment: Metadata objek dikonfigurasi agar diunduh sebagai lampiran. Untuk solusinya, lihat Skenario 2: Unduhan paksa akibat pengaturan metadata objek. -
Jika header respons tidak berisi bidang-bidang tersebut tetapi objek tetap diunduh: Browser kemungkinan tidak dapat mengenali jenis file objek tersebut. Untuk solusinya, lihat Skenario 3: Browser gagal menampilkan objek karena Content-Type salah.
Solusi
Skenario 1: Unduhan paksa akibat kebijakan keamanan OSS
Skenario ini terjadi ketika header respons berisi x-oss-force-download: true.
-
Penyebab: OSS menambahkan header
x-oss-force-download: truedanContent-Disposition: attachmentuntuk mencegah jenis file tertentu (seperti HTML) dieksekusi di browser. Kebijakan ini berlaku saat Anda mengakses objek melalui OSS default domain name atau acceleration endpoint pada bucket yang dibuat setelah tanggal tertentu.Untuk informasi lebih lanjut tentang kebijakan ini, lihat Lampiran: Referensi cepat aturan unduhan paksa OSS di akhir topik ini.
-
Solusi: Gunakan nama domain kustom untuk mengakses sumber daya OSS
-
Prosedur:
-
Petakan domain kustom: Masuk ke Konsol OSS. Di halaman Domain Names bucket, petakan nama domain kustom Anda yang telah memiliki Pendaftaran ICP.
-
Konfigurasi rekaman CNAME: Di penyedia nama domain Anda, seperti Alibaba Cloud DNS, tambahkan rekaman CNAME yang mengarahkan nama domain kustom Anda ke alamat CNAME yang disediakan oleh OSS.
-
Akses objek dengan domain baru: Akses objek melalui URL domain kustom Anda. Objek kini akan ditampilkan secara inline.
-
-
Untuk akselerasi global, petakan domain kustom Anda ke acceleration endpoint. Ini melewati kebijakan unduhan paksa sekaligus memberikan akses yang dipercepat.
-
Untuk instruksi detail, lihat Akses OSS melalui nama domain kustom.
Skenario 2: Unduhan paksa akibat pengaturan metadata objek
Skenario ini terjadi ketika header respons berisi Content-Disposition: attachment tetapi tidak berisi x-oss-force-download.
-
Penyebab: Metadata
Content-Dispositionobjek diatur keattachment, yang memaksa browser mengunduh alih-alih menampilkan objek. Jika pengaturan ini tidak dihapus setelah penggunaan sementara, semua permintaan selanjutnya akan memicu unduhan. -
Solusi: Ubah metadata
Content-Dispositionobjek menjadiinline-
Ubah melalui konsol
-
Masuk ke Konsol OSS dan buka halaman Objects di bagian Object Management bucket target.
-
Temukan objek target. Klik ikon ┇ di kolom Actions dan pilih Set Object Metadata.
-
Pada kotak dialog yang muncul, temukan bidang
Content-Dispositiondan ubah nilainya menjadiinline. -
Klik OK untuk menyimpan pengaturan.
-
-
Ubah secara batch menggunakan ossutil
# Atur Content-Disposition objek tertentu menjadi inline. ossutil set-props oss://your-bucket/your-object.pdf --content-disposition inline --metadata-directive update
-
Skenario 3: Browser gagal menampilkan objek karena Content-Type salah
Skenario ini terjadi ketika header respons normal, tetapi browser tetap mengunduh objek.
-
Penyebab:
Content-Typeobjek (jenis MIME) tidak ada atau salah. Misalnya, gambar JPG denganContent-Typediatur keapplication/octet-streamakan diunduh karena browser tidak dapat mengenali jenis file tersebut. -
Solusi: Atur
Content-Typeyang benar untuk objek-
Ubah melalui konsol
-
Masuk ke Konsol OSS dan buka halaman Objects di bagian Object Management bucket target.
-
Temukan objek target. Klik ikon ┇ di kolom Actions dan pilih Set Object Metadata.
-
Pada kotak dialog yang muncul, temukan bidang
Content-Typedan ubah nilainya ke nilai yang benar. -
Klik OK untuk menyimpan pengaturan.
Contoh Content-Type yang benar untuk jenis file umum:
-
Gambar:
image/jpeg,image/png,image/gif,image/webp -
Video:
video/mp4 -
Dokumen PDF:
application/pdf -
File HTML:
text/html -
Teks biasa:
text/plain
-
-
Ubah secara batch menggunakan ossutil
# Atur Content-Type objek tertentu menjadi image/jpeg. ossutil set-props oss://your-bucket/your-object.jpg --content-type image/jpeg --metadata-directive update -
Ubah dengan menggunakan SDK
CopyObjectSaat Anda menggunakan
CopyObjectuntuk menyalin objek, direktif metadataCOPYdigunakan secara default. Direktif ini menyalin metadata objek sumber ke objek tujuan apa adanya dan tidak secara otomatis melakukan inferensi atau memperbaruiContent-Typeberdasarkan ekstensi nama file objek tujuan. Dalam kasus ini, jika Anda hanya menentukanContent-Typedalam permintaan tanpa mengaturx-oss-metadata-directivekeREPLACE, pengaturan tersebut tidak berlaku, dan objek tujuan tetap menggunakanContent-Typeobjek sumber.Nilai valid untuk
x-oss-metadata-directive:-
COPY(default): menyalin metadata objek sumber dan mengabaikan metadata sepertiContent-Typeyang ditentukan dalam permintaan. -
REPLACE: mengganti metadata objek sumber dengan metadata yang ditentukan dalam permintaan.
Saat memanggil
CopyObject, Anda harus menentukanContent-Typedanx-oss-metadata-directive: REPLACEuntuk memperbaruiContent-Typeobjek tujuan ke nilai yang ditentukan. Contoh kode berikut menggunakan Python SDK:import oss2 # Inisialisasi bucket. auth = oss2.Auth('<your-access-key-id>', '<your-access-key-secret>') bucket = oss2.Bucket(auth, '<your-endpoint>', '<your-bucket-name>') # Atur Content-Type dan tetapkan direktif metadata ke REPLACE saat menyalin objek. headers = { "Content-Type": "image/jpeg", "x-oss-metadata-directive": "REPLACE" } bucket.copy_object('<source-bucket-name>', 'source-object.png', 'target-object.jpg', headers=headers)Sebagai alternatif, Anda dapat menggunakan metode
update_object_metauntuk langsung memperbaruiContent-Typeobjek yang sudah ada, atau tentukanContent-Typesaat mengunggah objek menggunakanput_object. -
-
Kasus penggunaan tambahan dan solusi
Perubahan metadata tidak berlaku: Periksa cache CDN
Jika Anda menggunakan CDN untuk mempercepat akses ke OSS, perubahan metadata seperti Content-Type atau Content-Disposition mungkin tidak langsung berlaku karena node CDN masih menyajikan versi yang di-cache.
Solusi: Bersihkan cache CDN untuk URL file yang dimodifikasi di Konsol CDN. Refresh dan prefetch sumber daya.
Bagaimana cara memaksa objek diunduh alih-alih ditampilkan?
Untuk selalu memaksa unduhan saat pengguna mengakses file, gunakan salah satu metode berikut.
-
Metode 1 (Direkomendasikan): Konfigurasi di OSS. Atur metadata
Content-Dispositionfile keattachmentseperti yang dijelaskan di Skenario 2. Terbaik untuk pengaturan permanen per file. -
Metode 2: Konfigurasi di CDN. Tambahkan
Content-Disposition: attachmentsebagai header respons outbound di bawah Cache di Konsol CDN. Ini menghindari modifikasi file sumber dan mendukung konfigurasi batch berdasarkan path atau jenis file.
Browser tidak mendukung format file untuk pratinjau
Browser tidak dapat menampilkan format profesional tertentu seperti .psd, .ai, dan .sketch. File-file ini akan diunduh terlepas dari konfigurasi OSS dan CDN.
Solusi: Pasang ekstensi browser untuk format tersebut, atau gunakan layanan pratinjau dokumen seperti WebOffice Online Preview.
Lampiran: Referensi cepat aturan unduhan paksa OSS
Periksa nilai x-oss-ec di header respons, lalu gunakan tabel berikut untuk mengidentifikasi aturan yang sesuai.
-
Kode error (x-oss-ec): Mengidentifikasi aturan yang memicu unduhan.
-
Waktu pembuatan bucket: Kebijakan biasanya hanya berlaku untuk bucket yang dibuat setelah waktu ini. Bucket lama biasanya tidak terpengaruh.
-
Waktu pengaktifan akselerasi transfer: Kebijakan biasanya hanya berlaku untuk bucket dengan akselerasi transfer yang diaktifkan setelah waktu ini. Bucket dengan akselerasi transfer yang diaktifkan lebih awal biasanya tidak terpengaruh.
Anda dapat melewati semua aturan unduhan paksa dengan menggunakan nama domain kustom.
Nama domain default OSS
|
Waktu kebijakan berlaku |
Wilayah |
Sumber daya 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 kebijakan berlaku |
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), UEA (Dubai) |
Bucket yang dibuat setelah kebijakan berlaku |
text/html |
|
|
14:00, 25 November 2019 |
China (Hong Kong) |
Bucket yang dibuat setelah kebijakan berlaku |
text/html |
|
|
17:00, 23 September 2019 |
China (Hohhot) |
Bucket yang dibuat setelah kebijakan berlaku |
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 kebijakan berlaku |
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 kebijakan berlaku |
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 kebijakan berlaku |
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 kebijakan berlaku |
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 kebijakan berlaku |
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 kebijakan berlaku |
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 berlaku |
Wilayah |
Sumber daya yang terpengaruh |
Jenis file yang terpengaruh |
Kode error |
|
00:00, 31 Desember 2020 |
Bucket yang diaktifkan akselerasi transfer-nya setelah kebijakan berlaku |
text/html |
||
|
12:00, 07 Januari 2021 |
UEA (Dubai) |
Bucket yang diaktifkan akselerasi transfer-nya setelah kebijakan berlaku |
||
|
18:00, 07 Januari 2021 |
Malaysia (Kuala Lumpur), UK (London) |
Bucket yang diaktifkan akselerasi transfer-nya setelah kebijakan berlaku |
||
|
18:00, 08 Januari 2021 |
Jepang (Tokyo), Indonesia (Jakarta), Jerman (Frankfurt) |
Bucket yang diaktifkan akselerasi transfer-nya setelah kebijakan berlaku |
||
|
12:00, 14 Januari 2021 |
US (Silicon Valley), US (Virginia), Singapura |
Bucket yang diaktifkan akselerasi transfer-nya setelah kebijakan berlaku |
||
|
00:00, 16 Januari 2021 |
China (Hong Kong) |
Bucket yang diaktifkan akselerasi transfer-nya setelah kebijakan berlaku |
||
|
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-nya setelah kebijakan berlaku |