Firebase Storage上具有SSL的自定义域名

at.*_*at. 2 firebase firebase-storage

通过简单地将存储桶命名为与我的域名相同的名称,然后将CNAME记录指向c.storage.googleapis.com,便能够获得映射到Firebase存储桶的自定义域名。但是,https不起作用,因为证书上的通用名称不同。我可以上传证书吗,或者甚至可以让GCP或Firebase管理证书?

ame*_*iel 7

我来晚了一点,这个问题可能已经在其他地方回答了。但是,由于这是我在谷歌搜索该功能时发现的第一个结果,因此没有任何帮助:

首先,假设您有一个assets.somedomain.com指向的CNAME c.storage.googleapis.com,并且创建了一个名为的存储桶assets.somedomain.com

在此处输入图片说明

然后,您上传一个文件,其公共网址如下所示:

https://firebasestorage.googleapis.com/v0/b/assets.somedomain.com/o/arduino.png?alt=media&token=asdf
Run Code Online (Sandbox Code Playgroud)

可以看成是:

firebasestorage.googleapis.com/v0/b/  
+
assets.somedomain.com
+
/o/
+
arduino.png?alt=media&token=asdf
Run Code Online (Sandbox Code Playgroud)

应该能够使用以下方法查看所述文件:

https://assets.somedomain.com/arduino.png?alt=media&token=asdf
Run Code Online (Sandbox Code Playgroud)

哪一个

assets.somedomain.com/
+
arduino.png?alt=media&token=asdf
Run Code Online (Sandbox Code Playgroud)

(基本上,您会删除原始的基本URL和/o/前缀)

但是,您当然会得到一个大警告,告诉您证书无效,因为它的意思是*.storage.googleapis.com

就我而言,我能够使用cloudflare的通用SSL来规避此问题,该SSL就像代理一样,不问任何问题。

在此处输入图片说明

您再试一次,但是在中间的某个地方,请求变为匿名,并且您得到一个XML,指出您缺少storage.objects.get权限。

<Error>
    <Code>AccessDenied</Code>
    <Message>Access denied.</Message>
    <Details>
        Anonymous users does not have storage.objects.get access to object.
    </Details>
</Error>
Run Code Online (Sandbox Code Playgroud)

这意味着即使查询字符串中包含令牌,代理请求也没有权限。然后,下一步是使存储桶在中公开可读Google Cloud Console -> Storage

在此处输入图片说明

(这可以使用gcloud cli来完成,但是我发现这种方法更容易解释)

请注意使用旧版对象读取器权限,该权限会阻止访问者实际列出存储桶内容。

之后,您应该可以使用以下方法访问图像:

https://assets.somedomain.com/arduino.png
Run Code Online (Sandbox Code Playgroud)

请注意,您甚至不需要包括“ alt = media”,因为cloudflare将提供文件而不是其元数据。


Mik*_*ald 3

目前,我们不支持 Cloud Storage for Firebase 中的自定义域。

您有两个选择:

  1. 使用 Firebase 托管(开发人员生成的内容)
  2. 通过 GCS 静态托管进行设置(文档

但无论哪种情况,您都将无法使用 Firebase SDK for Cloud Storage 及其身份验证和授权功能。

很高兴了解有关用例的更多信息,看看我们将来是否应该支持它。