クロスオリジンリソース共有 (CORS) により、webアプリケーションは異なるオリジンに属するリソースにアクセスできます。 Object Storage Service (OSS) は、クロスオリジンアクセスを制御するためのCORS API操作を提供します。
CORS ルールの設定
次のサンプルコードは、指定したバケットにCORSルールを設定する方法の例を示しています。
const OSS = require('ali-OSS ');
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: 'yourRegion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。
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個のCORSルールを設定できます。 既存のルールと同じ新しいルールが設定されている場合、既存のルールは上書きされます。
client.putBucketCORS("yourBucket", rules).then((r) => {
console.log(r);
});
CORSルールの照会
次のサンプルコードは、指定したバケットのCORSルールを照会する方法の例を示しています。
const OSS = require("ali-oss");
const assert = require("assert");
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: 'yourRegion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。
bucket: "yourBucket" 、});
// バケットの名前を指定します。
client.getBucketCORS("yourBucket").then((r) => {
assert.equal(r.res.status、200);
assert.de epEqual(r.ru les, [
{
allowedOrigin: "http://example.com" 、
allowedMethod: "GET" 、
allowedHeader: "*" 、
exposeHeader: "Content-Length" 、
maxAgeSeconds: "30" 、
},
]);
});
CORS ルールの削除
次のサンプルコードは、指定したバケットに設定されたCORSルールを削除する方法の例を示しています。
const OSS = require('ali-OSS ');
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: 'yourRegion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET
// バケットの名前を指定します。
bucket: "yourBucket" 、});
// バケットの名前を指定します。
client.de leteBucketCORS('yourBucket').then((res) => {
console.log(res);
}).catch(e => {
console.log(e)
})
参考資料
CORSルールの管理に使用される完全なサンプルコードについては、『GitHub』をご参照ください。
CORSルールを設定するために呼び出すことができるAPI操作の詳細については、「PutBucketCors」をご参照ください。
CORSルールを照会するために呼び出すAPI操作の詳細については、「GetBucketCors」をご参照ください。
CORSルールを削除するために呼び出すことができるAPI操作の詳細については、「DeleteBucketCors」をご参照ください。