设置跨域访问

跨域资源共享 (CORS) 定义了在一个域中加载的客户端 Web 应用程序与另一个域中的资源交互的方式。利用 CORS 支持,您可以构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨源访问您的资源。您可以通过 putBucketCors接口设置桶的跨域访问设置,以下为示例代码,该模块获取多个命令行参数,第一个参数指定要设置其 CORS 配置的存储桶。其他参数枚举您希望允许对存储桶使用的 HTTP 方法(POST、GET、PUT、PATCH、DELETE、POST):

// Create initial parameters JSON for putBucketCors
var thisConfig = {
  // 添加允许的请求头
  AllowedHeaders:["Authorization"],
  // 添加允许的请求方法
  AllowedMethods:[],
  // 添加允许的请求源
  AllowedOrigins:["*"],
  // 添加返回的字段
  ExposeHeaders:[],
  MaxAgeSeconds:3000
};

// Assemble the list of allowed methods based on command line parameters
var allowedMethods = [];
process.argv.forEach(function (val, index, array) {
  if (val.toUpperCase() === "POST") {allowedMethods.push("POST")};
  if (val.toUpperCase() === "GET") {allowedMethods.push("GET")};
  if (val.toUpperCase() === "PUT") {allowedMethods.push("PUT")};
  if (val.toUpperCase() === "PATCH") {allowedMethods.push("PATCH")};
  if (val.toUpperCase() === "DELETE") {allowedMethods.push("DELETE")};
  if (val.toUpperCase() === "HEAD") {allowedMethods.push("HEAD")};
});

// Copy the array of allowed methods into the config object
thisConfig.AllowedMethods = allowedMethods;
// Create array of configs then add the config object to it
var corsRules = new Array(thisConfig);

// Create CORS params
var corsParams = {
    Bucket: process.argv[2], 
    CORSConfiguration: {
        CORSRules: corsRules
    }
};

// set the new CORS configuration on the selected bucket
s3Client.putBucketCors(corsParams, function(err, data) {
  if (err) {
    // display error message
    console.log("Error", err);
  } else {
    // update the displayed CORS config for the selected bucket
    console.log("Success", data);
  }
});