因浏览器的同源策略限制,在不同域名之间进行数据交互或者资源共享时,会出现跨域请求被拒绝的问题。您可以通过设置允许特定的域名、方法和请求头的跨域访问策略,解决跨域问题。
设置跨域资源共享规则
以下代码用于设置指定存储空间的跨域资源共享规则:
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。