全部产品
Search
文档中心

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

更新时间:Nov 09, 2025

Karena kebijakan same-origin pada browser, permintaan lintas domain mungkin ditolak ketika data dipertukarkan atau sumber daya dibagikan antar nama domain yang berbeda. Topik ini menjelaskan cara mengonfigurasi aturan Berbagi Sumber Daya Lintas Domain (CORS). Dalam aturan CORS, Anda dapat menentukan nama domain dari mana permintaan dapat dikirim, metode yang digunakan untuk mengirim permintaan lintas domain, dan header yang diizinkan.

Catatan penggunaan

  • Contoh kode dalam topik ini menggunakan wilayah China (Hangzhou) (cn-hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara wilayah OSS dan titik akhir, lihat Wilayah dan Titik Akhir OSS.

  • Untuk menetapkan aturan CORS, Anda harus memiliki izin oss:PutBucketCors. Untuk mendapatkan aturan CORS, Anda harus memiliki izin oss:GetBucketCors. Untuk menghapus aturan CORS, Anda harus memiliki izin oss:DeleteBucketCors. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.

Contoh

Konfigurasikan aturan CORS

Berikut adalah kode contoh yang menunjukkan cara mengonfigurasi aturan CORS untuk sebuah bucket:

<?php

// Masukkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
    "region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan oleh layanan lain untuk mengakses OSS.
    "bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Tentukan bahwa parameter yang diperlukan belum dikonfigurasi.
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tentukan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tentukan wilayah.
$cfg->setRegion($region);

// Tentukan titik akhir jika titik akhir disediakan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Buat objek PutBucketCorsRequest untuk mengonfigurasi aturan CORS untuk bucket dan tentukan sumber serta metode permintaan yang diizinkan untuk CORS.
$request = new Oss\Models\PutBucketCorsRequest(bucket: $bucket, corsConfiguration: new Oss\Models\CORSConfiguration(
        array(
            new Oss\Models\CORSRule(
                allowedOrigins: ['*'], // Mengizinkan permintaan lintas domain dari semua sumber.
                allowedMethods: ['PUT', 'GET'] // Tentukan metode permintaan yang diizinkan untuk CORS.
            )
        )
    )
);

// Gunakan metode putBucketCors untuk mengonfigurasi aturan CORS untuk bucket.
$result = $client->putBucketCors($request);

// Tampilkan hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP yang dikembalikan.
    'request id:' . $result->requestId // ID permintaan dari permintaan, yang merupakan pengenal unik dari permintaan.
);

Tanyakan aturan CORS

Berikut adalah kode contoh yang menunjukkan cara menanyakan aturan CORS dari sebuah bucket:

<?php

// Masukkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
    "region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan oleh layanan lain untuk mengakses OSS.
    "bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Tentukan bahwa parameter yang diperlukan belum dikonfigurasi.
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tentukan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tentukan wilayah.
$cfg->setRegion($region);

// Tentukan titik akhir jika titik akhir disediakan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Buat objek GetBucketCorsRequest untuk menanyakan konfigurasi CORS dari sebuah bucket.
$request = new Oss\Models\GetBucketCorsRequest(bucket: $bucket);

// Gunakan metode getBucketCors untuk menanyakan konfigurasi CORS dari bucket.
$result = $client->getBucketCors($request);

// Tampilkan hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP yang dikembalikan.
    'request id:' . $result->requestId . PHP_EOL . // ID permintaan dari permintaan, yang merupakan pengenal unik dari permintaan.
    'cors:' . var_export($result->corsConfiguration, true) // Konfigurasi CORS dari bucket.
);

Hapus aturan CORS

Berikut adalah kode contoh yang menunjukkan cara menghapus semua aturan CORS dari sebuah bucket:

<?php

// Masukkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
    "region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan oleh layanan lain untuk mengakses OSS.
    "bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah.
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts); 

// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Tentukan bahwa parameter yang diperlukan belum dikonfigurasi.
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();

// Tentukan penyedia kredensial.
$cfg->setCredentialsProvider($credentialsProvider);

// Tentukan wilayah.
$cfg->setRegion($region);

// Tentukan titik akhir jika titik akhir disediakan.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Buat objek DeleteBucketCorsRequest untuk menghapus konfigurasi CORS dari bucket.
$request = new Oss\Models\DeleteBucketCorsRequest(bucket: $bucket);

// Gunakan metode deleteBucketCors untuk menghapus konfigurasi CORS dari bucket.
$result = $client->deleteBucketCors($request);

// Tampilkan hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP yang dikembalikan.
    'request id:' . $result->requestId // ID permintaan dari permintaan, yang merupakan pengenal unik dari permintaan.
);

Referensi

  • Untuk kode contoh lengkap CORS, kunjungi PutBucketCors, GetBucketCors, dan DeleteBucketCors.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengonfigurasi aturan CORS, lihat PutBucketCors.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan aturan CORS, lihat GetBucketCors.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menghapus aturan CORS, lihat DeleteBucketCors.