无法为Google云端存储设置网址

时间:2017-07-10 15:09:33

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

我尝试了多种方式来签署云存储网址。继续得到:

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

我应该测试多个库:

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。

1 个答案:

答案 0 :(得分:2)

听起来你有两个问题:

  1. 听起来您尝试在网络浏览器中使用JavaScript中的网址。如果是这样,您需要在对象上设置CORS策略,因为默认情况下是拒绝跨源请求。有关详细信息,请查看https://cloud.google.com/storage/docs/cross-origin

  2. 除此之外,当您直接输入URL并且您获得了SignatureDoesNotMatch异常时,听起来您的请求也失败了。我猜测问题是您正在为GET请求指定content_type。客户没有指定" Content-Type"提出请求时的标题。尝试删除它。