临时凭证的作用
临时凭证一般用于在用户上传文件时使用,主要作用是获取一个临时凭证,用于上传文件时的参数,如果没有临时凭证就报错,错误一般为403,还要实现一个跨域功能的代码,因为是从前端发起请求之后再向腾讯云发起请求就会出现一个URL跨域的问题
代码展示
1.实现获取临时凭证代码如下:
def credential(bucket, region):
""" 获取cos上传临时凭证 """
config = {
# 临时密钥有效时长,单位是秒(30分钟=1800秒)
'duration_seconds': 1800,
# 固定密钥 id
'secret_id': settings.TENCENT_COS_ID,
# 固定密钥 key
'secret_key': settings.TENCENT_COS_KEY,
# 换成你的 bucket
'bucket': bucket,
# 换成 bucket 所在地区
'region': region,
# 这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径
# 例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用)
'allow_prefix': '*',
# 密钥的权限列表。简单上传和分片需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/31923
'allow_actions': [
# "name/cos:PutObject",
# 'name/cos:PostObject',
# 'name/cos:DeleteObject',
# "name/cos:UploadPart",
# "name/cos:UploadPartCopy",
# "name/cos:CompleteMultipartUpload",
# "name/cos:AbortMultipartUpload",
"*",
],
}
sts = Sts(config)
result_dict = sts.get_credential()
return result_dict
2.实现跨域功能代码
def create_bucket(bucket, region):
"""
创建存储桶
:param bucket: 桶名称
:param region: 区域所在
:return:
"""
"""
创建桶
:param bucket: 桶名称
:param region: 区域
:return:
"""
config = CosConfig(Region=region, SecretId=settings.TENCENT_COS_ID, SecretKey=settings.TENCENT_COS_KEY)
client = CosS3Client(config)
client.create_bucket(
Bucket=bucket,
ACL="public-read" # private / public-read / public-read-write
)
# 设置跨域。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
cors_config = {
'CORSRule': [
{
'AllowedOrigin': '*',
'AllowedMethod': ['GET', 'PUT', 'HEAD', 'POST', 'DELETE'],
'AllowedHeader': "*",
'ExposeHeader': "*",
'MaxAgeSeconds': 500
}
]
}
client.put_bucket_cors(
Bucket=bucket,
CORSConfiguration=cors_config
)