全部產品
Search
文件中心

Object Storage Service:Node.js跨域資源共用

更新時間:Feb 28, 2024

跨域資源共用(Cross-origin resource sharing,簡稱CORS)允許Web端的應用程式訪問不屬於本域的資源。OSS提供跨域資源共用介面,方便您控制跨域訪問的許可權。

設定跨域資源共用規則

以下代碼用於為指定Bucket設定跨域資源共用規則:

const OSS = require('ali-oss');

const client = new OSS({
  // yourRegion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourRegion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  // 填寫Bucket名稱。
  bucket: 'yourBucket'
});

const rules = [{
        // 指定允許跨域請求的來源,支援萬用字元星號(*),表示允許所有的來源域。
        allowedOrigin: 'http://example.com',
        // 指定允許的跨域要求方法,支援GET、PUT、DELETE、POST和HEAD方法。
        allowedMethod: 'GET',
        // 指定允許跨域請求的回應標頭。建議無特殊情況下將此項設定為萬用字元星號(*)。
        allowedHeader: '*',
        // 指定允許使用者從應用程式中訪問的回應標頭,例如一個JavaScript的XMLHttpRequest對象。不允許使用萬用字元星號(*)。
        exposeHeader: 'Content-Length',
        // 指定瀏覽器對特定資源的預取(OPTIONS)請求返回結果的緩衝時間,單位為秒。
        maxAgeSeconds: '30'
  },
];
// 最多允許設定10條跨域資源共用規則。如果配置了相同的規則,則已存在的規則將被覆蓋。
client.putBucketCORS("yourBucket", rules).then((r) => {
  console.log(r);
});           

擷取跨域資源共用規則

以下代碼用於擷取指定Bucket的跨域資源共用規則:

const OSS = require("ali-oss");
const assert = require("assert");

const client = new OSS({
  // yourRegion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourRegion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  // 填寫Bucket名稱。
  bucket: "yourBucket",
});

// 填寫Bucket名稱。
client.getBucketCORS("yourBucket").then((r) => {
  assert.equal(r.res.status, 200);
  assert.deepEqual(r.rules, [
    {
      allowedOrigin: "http://example.com",
      allowedMethod: "GET",
      allowedHeader: "*",
      exposeHeader: "Content-Length",
      maxAgeSeconds: "30",
    },
  ]);
});

刪除跨域資源共用規則

以下代碼用於刪除指定Bucket的所有跨域資源共用規則:

const OSS = require('ali-oss');

const client = new OSS({
  // yourRegion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourRegion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET
  // 填寫Bucket名稱。
  bucket: "yourBucket",
});

// 填寫Bucket名稱。
client.deleteBucketCORS('yourBucket').then((res) => {
  console.log(res);
}).catch(e => {
  console.log(e)
})

相關文檔

  • 關於跨域資源共用的完整範例程式碼,請參見GitHub樣本

  • 關於設定跨域資源共用規則的API介面說明,請參見PutBucketCors

  • 關於擷取跨域資源共用規則的API介面說明,請參見GetBucketCors

  • 關於刪除跨域資源共用規則的API介面說明,請參見DeleteBucketCors