【问题标题】:Unable to sign URLs for Google Cloud Storage无法签署 Google Cloud Storage 的网址
【发布时间】:2017-07-11 01:18:02
【问题描述】:

我尝试了多种方法来签署 Cloud Storage URL。继续获取:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 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 和存储桶授予服务帐号对存储空间的完全访问权限。 我认为重定向可能是问题,但复制粘贴也不起作用;签名不匹配。

【问题讨论】:

    标签: python google-app-engine google-cloud-platform google-cloud-storage acl


    【解决方案1】:

    听起来你有两个问题:

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

    2. 除此之外,当您直接输入 URL 时,您的请求听起来也失败了,并且您遇到了 SignatureDoesNotMatch 异常。我猜问题是您正在为 GET 请求指定 content_type 。客户端在发出请求时未指定“Content-Type”标头。尝试删除它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      相关资源
      最近更新 更多