如何将CORS添加到firebase-访问控制允许来源

如何将CORS添加到firebase-访问控制允许来源,firebase,google-cloud-platform,cors,google-cloud-functions,Firebase,Google Cloud Platform,Cors,Google Cloud Functions,设置firestore functions.https.onRequest,在我的前端错误上调用此命令请求的资源上不存在“Access Control Allow Origin”标头 尝试了很多其他的答案,但都没有成功。如何为谷歌云功能正确设置cors 在过去的3个小时里,我在网上尝试了大部分答案 通过gsutil将cors收割台添加到铲斗(根据此答案)?我不知道这是不是别的原因,不过 阅读 我试着像下面这个函数示例那样做: 这是我使用cors中间件的尝试 const functions =

设置firestore functions.https.onRequest,在我的前端错误上调用此命令请求的资源上不存在“Access Control Allow Origin”标头

尝试了很多其他的答案,但都没有成功。如何为谷歌云功能正确设置cors

在过去的3个小时里,我在网上尝试了大部分答案

  • 通过gsutil将cors收割台添加到铲斗(根据此答案)?我不知道这是不是别的原因,不过

  • 阅读

  • 我试着像下面这个函数示例那样做:

这是我使用cors中间件的尝试

const functions = require('firebase-functions');
const cors = require('cors')({
  origin: true
});

const admin = require('firebase-admin');

admin.initializeApp();


exports.exampleFunction = functions.https.onRequest(async (req, res) => {

  return cors(req, res, () => {

    // Forbidding PUT requests.
    if (req.method === 'PUT') {
      return res.status(403).send('Forbidden!');
    }

    //respond to CORS preflight requests
    if (req.method == 'OPTIONS') {
      res.status(204).send('');
      return null
    }

   // code ...
   res.sendStatus(200);
}
我不知道我做错了什么


我做错了什么?

您提到在前端出现此错误-您是否在chrome中禁用了CORS以允许请求通过


链接:

使用URL重写允许在您的域下提供该功能

好的,正确的解决方案是重写函数以使用域名,因此我们甚至不需要cors

firebase.json的hosting部分下,将以下内容添加到
的“重写”部分的开头:

  {
    "source": "/api/functionName/**",
    "function": "functionName"
  },
我通过以下方式发出请求:

// send data to cloudfunction
var xhr = new XMLHttpRequest();
xhr.open('GET', "https://example.com/api/functionName/?param1="+ this.param1, true);
xhr.send();

这允许通过
req.query.param1

获取云函数中的参数。我很困惑——你说你试图在云函数上设置CORS,但你引用的是一个bucket和云存储URL。是哪一个?使用已经对我起作用了,应该也能对您起作用,请阅读如何配置它。我也很困惑。所以我认为CloudStorageBucket中引用了云函数(因为有一个项目与我的firebase项目同名)。将在云功能中使用cors中间件重试。谢谢请看我更新的问题,我现在正在使用cors中间件,就像在示例函数中一样,但仍然得到错误。对不起,这不是我要找的。它需要在生产中为每个人工作。