全部产品
Search
文档中心

Object Storage Service:Berbagi sumber daya lintas asal (Python SDK V2)

更新时间:Nov 09, 2025

Karena kebijakan asal sama di browser, permintaan lintas asal mungkin ditolak ketika data dipertukarkan atau sumber daya dibagikan antara nama domain yang berbeda. Topik ini menjelaskan cara mengonfigurasi aturan Berbagi Sumber Daya Lintas Asal (CORS). Dalam aturan CORS, Anda dapat menentukan nama domain asal yang diizinkan, metode permintaan, dan header.

Catatan

  • Contoh kode dalam topik ini menggunakan ID Wilayah cn-hangzhou untuk Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda ingin mengakses sumber daya dalam bucket dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir OSS.

  • Untuk mengonfigurasi aturan CORS, Anda harus memiliki izin oss:PutBucketCors. Untuk menanyakan aturan CORS, Anda harus memiliki izin oss:GetBucketCors. Untuk menghapus aturan CORS, Anda harus memiliki izin oss:DeleteBucketCors. Untuk informasi lebih lanjut, lihat Berikan Kebijakan Kustom kepada Pengguna RAM.

Definisi metode

Konfigurasikan aturan CORS

put_bucket_cors(request: PutBucketCorsRequest, **kwargs) → PutBucketCorsResult

Tanyakan aturan CORS

get_bucket_cors(request: GetBucketCorsRequest, **kwargs) → GetBucketCorsResult

Hapus aturan CORS

delete_bucket_cors(request: DeleteBucketCorsRequest, **kwargs) → DeleteBucketCorsResult

Parameter permintaan

Parameter

Tipe

Deskripsi

request

PutBucketCorsRequest

Parameter permintaan. Untuk informasi lebih lanjut, lihat PutBucketCorsRequest

GetBucketCorsRequest

Parameter permintaan. Untuk informasi lebih lanjut, lihat GetBucketCorsRequest

DeleteBucketCorsRequest

Parameter permintaan. Untuk informasi lebih lanjut, lihat DeleteBucketCorsRequest

Parameter respons

Tipe

Deskripsi

PutBucketCorsResult

Nilai balik. Untuk informasi lebih lanjut, lihat PutBucketCorsResult

GetBucketCorsResult

Nilai balik. Untuk informasi lebih lanjut, lihat GetBucketCorsResult

DeleteBucketCorsResult

Nilai balik. Untuk informasi lebih lanjut, lihat DeleteBucketCorsResult

Untuk informasi lebih lanjut tentang mengonfigurasi aturan CORS, lihat put_bucket_cors.

Untuk informasi lebih lanjut tentang menanyakan aturan CORS, lihat get_bucket_cors.

Untuk informasi lebih lanjut tentang menghapus aturan CORS, lihat delete_bucket_cors.

Contoh kode

Konfigurasikan aturan CORS

Anda dapat menggunakan kode berikut untuk mengonfigurasi aturan CORS untuk bucket tertentu.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: Konfigurasikan CORS untuk bucket.
parser = argparse.ArgumentParser(description="atur cors bucket")

# Tentukan argumen baris perintah, termasuk wilayah dan nama bucket yang diperlukan, serta endpoint opsional dan response_vary.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--response_vary', help='Menunjukkan apakah header Vary: Origin dikembalikan. Nilai default: false', default='false')

def main():
    # Parsing argumen baris perintah untuk mendapatkan nilai yang dimasukkan oleh pengguna.
    args = parser.parse_args()

    # Muat informasi kredensial akses dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK untuk membuat objek konfigurasi dan setel penyedia autentikasi.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel properti wilayah objek konfigurasi berdasarkan argumen baris perintah yang diberikan oleh pengguna.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui properti titik akhir dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi sebelumnya untuk menginisialisasi klien OSS untuk berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk mengonfigurasi CORS untuk bucket yang ditentukan.
    result = client.put_bucket_cors(oss.PutBucketCorsRequest(
            bucket=args.bucket,  # Nama bucket.
            cors_configuration=oss.CORSConfiguration(
                cors_rules=[
                    # Aturan CORS pertama.
                    oss.CORSRule(
                        allowed_origins=['*'],  # Izinkan semua asal.
                        allowed_methods=['GET', 'HEAD'],  # Metode yang diizinkan.
                        allowed_headers=['GET'],  # Header permintaan yang diizinkan.
                        expose_headers=['x-oss-test', 'x-oss-test1'],  # Header respons yang diekspos.
                        max_age_seconds=33012,  # Periode validitas permintaan preflight.
                    ),
                    # Aturan CORS kedua.
                    oss.CORSRule(
                        allowed_origins=['http://www.example.com'],  # Izinkan asal tertentu.
                        allowed_methods=['PUT', 'POST'],  # Metode yang diizinkan.
                        allowed_headers=['*'],  # Izinkan semua header permintaan.
                        expose_headers=['x-oss-test2', 'x-oss-test3'],  # Header respons yang diekspos.
                        max_age_seconds=33012,  # Periode validitas permintaan preflight.
                    )
                ],
                response_vary=args.response_vary,  # Menentukan apakah akan mengembalikan header Vary: Origin. Nilai default adalah False.
            ),
    ))

    # Cetak kode status dan ID permintaan hasil operasi untuk memastikan status permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          )

# Saat skrip ini dijalankan langsung, panggil fungsi utama untuk memulai logika pemrosesan.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Alur program dimulai di sini.

Tanyakan aturan CORS

Anda dapat menggunakan kode berikut untuk menanyakan aturan CORS.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: Tanyakan konfigurasi CORS bucket.
parser = argparse.ArgumentParser(description="dapatkan cors bucket")

# Tentukan argumen baris perintah, termasuk wilayah dan nama bucket yang diperlukan, serta endpoint opsional.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

def main():
    # Parsing argumen baris perintah untuk mendapatkan nilai yang dimasukkan oleh pengguna.
    args = parser.parse_args()

    # Muat informasi kredensial akses dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK untuk membuat objek konfigurasi dan setel penyedia autentikasi.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel properti wilayah objek konfigurasi berdasarkan argumen baris perintah yang diberikan oleh pengguna.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui properti titik akhir dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi sebelumnya untuk menginisialisasi klien OSS untuk berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk menanyakan konfigurasi CORS bucket yang ditentukan.
    result = client.get_bucket_cors(oss.GetBucketCorsRequest(
            bucket=args.bucket,  # Nama bucket.
    ))

    # Cetak kode status, ID permintaan, dan nilai response vary dari hasil operasi.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' response vary: {result.cors_configuration.response_vary},'
          )

    # Telusuri dan cetak detail setiap aturan CORS.
    for r in result.cors_configuration.cors_rules:
        print(f'hasil: {r.max_age_seconds}, {r.allowed_origins}, {r.allowed_methods}, {r.allowed_headers}, {r.expose_headers}')

# Saat skrip ini dijalankan langsung, panggil fungsi utama untuk memulai logika pemrosesan.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Alur program dimulai di sini.

Hapus aturan CORS

Anda dapat menggunakan kode berikut untuk menghapus semua aturan CORS bucket tertentu.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: Hapus konfigurasi CORS bucket.
parser = argparse.ArgumentParser(description="hapus cors bucket")

# Tentukan argumen baris perintah, termasuk wilayah dan nama bucket yang diperlukan, serta endpoint opsional.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

def main():
    # Parsing argumen baris perintah untuk mendapatkan nilai yang dimasukkan oleh pengguna.
    args = parser.parse_args()

    # Muat informasi kredensial akses dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK untuk membuat objek konfigurasi dan setel penyedia autentikasi.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Setel properti wilayah objek konfigurasi berdasarkan argumen baris perintah yang diberikan oleh pengguna.
    cfg.region = args.region

    # Jika titik akhir kustom disediakan, perbarui properti titik akhir dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi sebelumnya untuk menginisialisasi klien OSS untuk berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk menghapus konfigurasi CORS bucket yang ditentukan.
    result = client.delete_bucket_cors(oss.DeleteBucketCorsRequest(
            bucket=args.bucket,  # Nama bucket.
    ))

    # Cetak kode status dan ID permintaan hasil operasi untuk memastikan status permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          )

# Saat skrip ini dijalankan langsung, panggil fungsi utama untuk memulai logika pemrosesan.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Alur program dimulai di sini.

Referensi

  • Untuk informasi lebih lanjut tentang pemecahan masalah kesalahan konfigurasi CORS umum, lihat 34-CORS.

  • Untuk kode contoh lengkap untuk mengonfigurasi aturan CORS, lihat put_bucket_cors.py.

  • Untuk kode contoh lengkap untuk menanyakan aturan CORS, lihat get_bucket_cors.py.

  • Untuk kode contoh lengkap untuk menghapus aturan CORS, lihat delete_bucket_cors.py.