本文介绍如何进行跨域资源共享。
跨域资源共享(Cross-origin resource sharing,简称CORS)允许Web端的应用程序访问不属于本域的资源。OSS提供跨域资源共享接口,方便您控制跨域访问的权限。
更多关于跨域资源共享的介绍,请参见开发指南中的设置跨域访问和API参考中PutBucketcors。
设置跨域资源共享规则
以下代码用于设置指定存储空间的跨域资源共享规则:
# -*- coding: utf-8 -*- import oss2 from oss2.models import BucketCors, CorsRule # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') rule = CorsRule(allowed_origins=['*'], allowed_methods=['GET', 'HEAD'], allowed_headers=['*'], max_age_seconds=1000) # 已存在的规则将被覆盖。 bucket.put_bucket_cors(BucketCors([rule]))
获取跨域资源共享规则
以下代码用于获取跨域资源共享规则:
# -*- coding: utf-8 -*- import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') try: cors = bucket.get_bucket_cors() except oss2.exceptions.NoSuchCors: print('cors is not set') else: for rule in cors.rules: print('AllowedOrigins={0}'.format(rule.allowed_origins)) print('AllowedMethods={0}'.format(rule.allowed_methods)) print('AllowedHeaders={0}'.format(rule.allowed_headers)) print('ExposeHeaders={0}'.format(rule.expose_headers)) print('MaxAgeSeconds={0}'.format(rule.max_age_seconds))
删除跨域资源共享规则
以下代码用于删除指定存储空间的所有跨域资源共享规则:
# -*- coding: utf-8 -*- import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://console.cloud.tmall.com 创建RAM账号。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') bucket.delete_bucket_cors()