是否可以对 Firebase Storage 公共文件使用“保存到云端硬盘”按钮(cors 问题)?

问题描述 投票:0回答:1

我正在尝试执行以下操作:

  1. 将文件保存到我的 Firebase 存储并获取其公共链接。
  2. 在我的网站上添加“保存到云端硬盘”按钮,以便用户可以将此文件保存到他们的 Google 云端硬盘。

我已经为存储设置了这些cors设置:

[
    {
      "origin": ["*"],
      "method": ["GET", "HEAD", "OPTIONS"],
      "responseHeader": ["*"],
      "maxAgeSeconds": 3600
    }
]

但是当我尝试使用“保存到驱动器”按钮保存文件后,我收到 cors 错误:

访问 XMLHttpRequest 'https://firebasestorage.googleapis.com/v0/b/{domain}/o/projects%2F-NXLt_SKMfg2aMASx9hu%2Fexport%2Ftmp_export.pdf?alt=media&token=e9336aa3-c827-423b-bd09-162c8d332f80' 来自来源 'http://localhost:8082' 已被 CORS 策略阻止: 请求头字段cache-control不被允许 预检响应中的访问控制允许标头。

Cors errors

有没有办法实现这个目标?

firebase google-cloud-firestore google-drive-api cors firebase-storage
1个回答
0
投票

我发现您可以使用 Firebase http 函数来实现此目的。从存储下载并将其添加到端点的响应中

exports.exportFile = onRequest({ cors: ["*"] }, async (req, res) => {

  // some code to get file

  const buffer = ... //get buffer of your file

  res.setHeader("Content-Type", "application/octet-stream");
  res.setHeader("Content-Disposition", "attachment; filename={your_filename}");
  res.send(buffer);
});

然后只需将网址添加到“保存到云端硬盘”按钮即可。

<div
  class="g-savetodrive"
  data-src="http://{domain}/.../exportFile"
  data-filename="{filename}"
  data-sitename=""
></div>
© www.soinside.com 2019 - 2024. All rights reserved.