跨域資源共用(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,
authorizationV4: true,
// 填寫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,
authorizationV4: true,
// 填寫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,
authorizationV4: true,
// 填寫Bucket名稱。
bucket: "yourBucket",
});
// 填寫Bucket名稱。
client.deleteBucketCORS('yourBucket').then((res) => {
console.log(res);
}).catch(e => {
console.log(e)
})
相關文檔
關於跨域資源共用的完整範例程式碼,請參見GitHub樣本。
關於設定跨域資源共用規則的API介面說明,請參見PutBucketCors。
關於擷取跨域資源共用規則的API介面說明,請參見GetBucketCors。
關於刪除跨域資源共用規則的API介面說明,請參見DeleteBucketCors。