全部產品
Search
文件中心

Object Storage Service:Ruby跨域資源共用

更新時間:Feb 28, 2024

因瀏覽器的同源策略限制,在不同網域名稱之間進行資料互動或者資源共用時,會出現跨域請求被拒絕的問題。您可以通過設定允許特定的網域名稱、方法和要求標頭的跨域存取原則,解決跨域問題。

設定跨域資源共用規則

以下代碼用於設定指定儲存空間的跨域資源共用規則:

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# 填寫Bucket名稱,例如examplebucket。
bucket = client.get_bucket('examplebucket')
# 設定跨域資源共用規則。
bucket.cors = [
    Aliyun::OSS::CORSRule.new(
      # 指定允許跨域請求的來源,例如http://example.com。
      :allowed_origins => ['http://example.com', 'http://example.net'],
      # 指定允許的跨域請求的HTTP方法(GET/PUT/DELETE/POST/HEAD)。
      :allowed_methods => ['PUT', 'POST', 'GET'],
      # 在OPTIONS預取指令中允許的header,例如x-oss-test。
      :allowed_headers => ['x-oss-test'],
      # 指定允許使用者從應用程式中訪問的回應標頭。
      :expose_headers => ['x-oss-test1'],
      # 指定瀏覽器對特定資源的預取(OPTIONS)請求返回結果的緩衝時間,單位為秒。
      :max_age_seconds => 100)
]

擷取跨域資源共用規則

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

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
    # 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# 填寫Bucket名稱,例如examplebucket。
bucket = client.get_bucket('examplebucket')
cors = bucket.cors
puts cors.map(&:to_s)

刪除跨域資源共用規則

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

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# 填寫Bucket名稱,例如examplebucket。
bucket = client.get_bucket('examplebucket')
bucket.cors = []

相關文檔

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

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

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