我试过这个:
connection = S3Connection(
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY)
url = connection.generate_url(
60,
'GET',
settings.AWS_STORAGE_BUCKET_NAME,
self.get_object().image,
headers={'Content-Type': 'application/octet-stream'})
Run Code Online (Sandbox Code Playgroud)
但是当我尝试访问签名的URL时,我收到以下消息:
我们计算的请求签名与您提供的签名不匹配.检查您的密钥和签名方法.
headers另一方面,如果我删除该属性,我可以很好地访问该图像.我究竟做错了什么?
问题是您无法使用generate_url设置任意标头,并且虽然该response_headers选项存在,但AWS也可以设置有限的选项.这将做到在这种情况下的预期.
url = connection.generate_url(
60,
'GET',
settings.AWS_STORAGE_BUCKET_NAME,
self.get_object().image,
response_headers={
'response-content-type': 'application/octet-stream'
})
Run Code Online (Sandbox Code Playgroud)