Cross Origin Resource Sharing (CORS) memungkinkan interaksi antara resource dari origin yang berbeda, sesuatu yang biasanya dilarang untuk mencegah perilaku berbahaya. Gunakan halaman ini untuk mempelajari cara menetapkan konfigurasi CORS pada bucket Cloud Storage dan cara melihat konfigurasi yang ditetapkan pada bucket. Lihat Contoh konfigurasi untuk CORS untuk mengetahui contoh konfigurasi CORS, termasuk konfigurasi yang menonaktifkan konfigurasi yang ada di bucket Anda.
Menetapkan konfigurasi CORS pada bucket
Anda menetapkan konfigurasi CORS pada bucket dengan menentukan informasi, seperti metode HTTP dan domain asal, yang mengidentifikasi jenis permintaan yang dapat diterima bucket.
Gunakan langkah-langkah berikut untuk menetapkan konfigurasi CORS di bucket Anda:
Konsol
Anda tidak dapat mengelola CORS menggunakan Konsol Google Cloud. Untuk itu, gunakan gcloud CLI.
Command line
Buat file JSON dengan konfigurasi CORS yang ingin Anda terapkan. Lihat contoh konfigurasi untuk mengetahui contoh file JSON.
Gunakan perintah
gcloud storage buckets update
dengan flag--cors-file
:gcloud storage buckets update gs://BUCKET_NAME --cors-file=CORS_CONFIG_FILE
Dengan keterangan:
BUCKET_NAME
adalah nama bucket yang relevan. Contoh,my-bucket
.CORS_CONFIG_FILE
adalah jalur ke file JSON yang Anda buat pada Langkah 1.
Library klien
C++
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C++ API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh berikut menetapkan konfigurasi CORS pada bucket:
C#
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C# API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh berikut menetapkan konfigurasi CORS pada bucket:
Go
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Go API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh berikut menetapkan konfigurasi CORS pada bucket:
Java
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh berikut menetapkan konfigurasi CORS pada bucket:
Node.js
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Node.js API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh berikut menetapkan konfigurasi CORS pada bucket:
PHP
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage PHP API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh berikut menetapkan konfigurasi CORS pada bucket:
Python
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Python API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh berikut menetapkan konfigurasi CORS pada bucket:
Ruby
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Ruby API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh berikut menetapkan konfigurasi CORS pada bucket:
REST API
JSON API
Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header
Authorization
.Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header
Authorization
.Buat file JSON dengan konfigurasi CORS yang ingin Anda terapkan. Lihat contoh konfigurasi untuk mengetahui contoh file JSON.
Gunakan
cURL
untuk memanggil JSON API dengan permintaan BucketPATCH
:curl --request PATCH \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' \ --header 'Content-Type: application/json' \ --data-binary @CORS_CONFIG_FILE
Dengan keterangan:
BUCKET_NAME
adalah nama bucket. Misalnya,my-bucket
.CORS_CONFIG_FILE
adalah jalur ke file JSON yang Anda buat di Langkah 2.
XML API
Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header
Authorization
.Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header
Authorization
.Buat file XML dengan konfigurasi CORS yang ingin Anda terapkan. Lihat contoh konfigurasi untuk mengetahui contoh file XML.
Gunakan
cURL
untuk memanggil XML API dengan permintaanPUT Bucket
yang dicakupkan ke?cors
:curl -X PUT --data-binary @CORS_CONFIG_FILE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-project-id: PROJECT_ID" \ "https://storage.googleapis.com/BUCKET_NAME?cors"
Dengan keterangan:
BUCKET_NAME
adalah nama bucket. Misalnya,my-bucket
.PROJECT_ID
adalah ID project yang terkait dengan bucket. Contoh,my-project
.CORS_CONFIG_FILE
adalah jalur ke file XML yang Anda buat di Langkah 2.
Guna menghapus konfigurasi CORS untuk bucket, tetapkan konfigurasi CORS kosong.
Melihat konfigurasi CORS untuk bucket
Untuk melihat konfigurasi CORS untuk bucket:
Konsol
Anda tidak dapat mengelola CORS menggunakan Konsol Google Cloud. Untuk itu, gunakan gcloud CLI.
Command line
Gunakan perintah gcloud storage buckets describe
dengan flag --format
:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(cors_config)"
Dengan BUCKET_NAME
adalah nama bucket yang konfigurasi CORS-nya ingin Anda lihat. Contoh, my-bucket
.
Library klien
Agar dapat melihat konfigurasi CORS untuk bucket menggunakan library klien, ikuti petunjuk untuk menampilkan metadata bucket dan cari kolom CORS dalam respons:
C++
Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Cloud Storage C++ API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
C#
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C# API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Go API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Node.js API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage PHP API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Python API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Ruby API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
REST API
JSON API
Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header
Authorization
.Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header
Authorization
.Gunakan
cURL
untuk memanggil JSON API dengan permintaan BucketGET
:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=cors"
Dengan:
BUCKET_NAME
adalah nama bucket yang relevan. Contoh,my-bucket
.
XML API
Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header
Authorization
.Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header
Authorization
.Gunakan
cURL
untuk memanggil XML API dengan permintaan Bucket yang dicakupkan ke?cors
:GET
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?cors"
Dengan
BUCKET_NAME
adalah nama bucket yang relevan. Contoh,my-bucket
.
Memecahkan masalah permintaan CORS
Jika Anda mengalami perilaku yang tidak terduga saat mengakses bucket Cloud Storage dari asal yang berbeda, coba langkah berikut:
Tinjau konfigurasi CORS pada bucket target. Jika Anda memiliki beberapa entri konfigurasi CORS, pastikan nilai permintaan yang Anda gunakan untuk memecahkan masalah dipetakan ke nilai dalam satu entri konfigurasi CORS.
Pastikan Anda tidak membuat permintaan ke endpoint
storage.cloud.google.com
, yang tidak mengizinkan permintaan CORS. Untuk mengetahui informasi lebih lanjut mengenai endpoint yang didukung untuk CORS, lihat Dukungan CORS Cloud Storage.Tinjau permintaan dan respons menggunakan alat pilihan Anda. Di browser Chrome, Anda dapat menggunakan alat developer standar untuk melihat informasi ini:
- Klik menu Chrome (more_vert) di toolbar browser.
- Pilih Alat Lainnya > Alat Developer.
- Klik tab Jaringan.
- Dari aplikasi atau command line, kirim permintaan tersebut.
- Di panel yang menampilkan aktivitas jaringan, cari permintaan tersebut.
- Di kolom Name, klik nama yang sesuai dengan permintaan.
- Klik tab Header untuk melihat header respons, atau tab Response untuk melihat isi respons.
Jika Anda tidak melihat permintaan dan respons, mungkin browser telah meng-cache upaya permintaan preflight yang gagal sebelumnya. Menghapus cache browser juga akan menghapus cache preflight. Jika tidak, tetapkan nilai
MaxAgeSec
dalam konfigurasi CORS Anda ke nilai yang lebih rendah (nilai defaultnya adalah 1800 (30 menit) jika tidak ditentukan), tunggu selama durasiMaxAgeSec
lama, lalu coba ulangi permintaan tersebut. Tindakan ini akan melakukan permintaan preflight baru, yang mengambil konfigurasi CORS baru dan menghapus permanen entri cache. Setelah men-debug masalah, naikkanMaxAgeSec
kembali ke nilai yang lebih tinggi untuk mengurangi traffic preflight ke bucket Anda.Pastikan permintaan memiliki header
Origin
dan nilai header-nya cocok setidaknya dengan salah satu nilaiOrigins
dalam konfigurasi CORS bucket. Perhatikan bahwa skema, host, dan port nilai harus sama persis. Beberapa contoh kecocokan yang dapat diterima adalah sebagai berikut:http://origin.example.com
cocok denganhttp://origin.example.com:80
(karena 80 adalah port HTTP default), tetapi tidak cocok denganhttps://origin.example.com
,http://origin.example.com:8080
,http://origin.example.com:5151
, atauhttp://sub.origin.example.com
.https://example.com:443
cocok denganhttps://example.com
, tetapi tidak cocok denganhttp://example.com
atauhttp://example.com:443
.http://localhost:8080
hanya cocok persis denganhttp://localhost:8080
, bukanhttp://localhost:5555
atauhttp://localhost.example.com:8080
.
Pastikan metode HTTP permintaan (jika ini permintaan sederhana), atau metode yang ditentukan dalam
Access-Control-Request-Method
(jika ini adalah permintaan preflight), cocok dengan setidaknya salah satuMethods
di konfigurasi CORS bucket.Jika ini adalah permintaan preflight, lihat apakah permintaan menyertakan satu atau beberapa header
Access-Control-Request-Header
. Jika demikian, pastikan setiap nilaiAccess-Control-Request-Header
cocok dengan nilaiResponseHeader
dalam konfigurasi CORS bucket. Semua header yang disebutkan dalamAccess-Control-Request-Header
harus ada dalam konfigurasi CORS agar permintaan preflight berhasil dan menyertakan header CORS dalam respons.
Langkah selanjutnya
- Pelajari contoh konfigurasi CORS, termasuk contoh yang menghapus konfigurasi CORS pada bucket.
- Pelajari CORS lebih lanjut.