1

我试过多种方式来签署云端存储网址。请继续获取:无法签署Google云端存储的网址

对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。原因'#####'因此不被允许访问。

的KOD应该工作,因为我已经测试了多个库:

from google.cloud import storage 

storage_client = storage.Client() 
bucket = storage_client.get_bucket(app_identity.get_default_gcs_bucket_name()) 
latest_blob = None 
for blob in bucket.list_blobs(): 
    bn = blob.name 
    if not latest_blob or bn > latest_blob.name: 
    latest_blob = blob 
signed_url = latest_blob.generate_signed_url(
    int(time.time()) + 3600, 
    method='GET', 
    content_type="text/csv") 
self.redirect(signed_url) 

我想可能有一些云的控制台设置巫术需要。

我已授予服务帐户对存储的完全访问权限,IAM和存储桶中。 我认为重定向可能是问题,但复制粘贴也不起作用; SignatureDoesNotMatch。

回答

2

这听起来像你有两个问题:

  1. 这听起来像你试图使用从JavaScript的URL在Web浏览器。如果是这样,您需要在您的对象上设置CORS策略,因为默认设置是拒绝跨源请求。详情请查看https://cloud.google.com/storage/docs/cross-origin

  2. 除此之外,听起来像您的请求也失败了,当你直接输入网址,并且你有一个SignatureDoesNotMatch异常。我猜测问题是你指定一个GET请求的content_type。客户在提出请求时不指定“Content-Type”标头。尝试删除它。

相关问题