使用firebase函数解决CORS



如您所知,由于CORS,我们无法在客户端获取url。我正在尝试创建一个函数,该函数将作为代理为我获取具有正确标头的文件,并将其返回给客户端。

因此,在Firebase Function:上

exports.urlToBlob = functions.https.onRequest((request,response) => {
cors(request, response, () => {
var url = "https://..."; //request.query.url;
fetch (
url,
{
method: 'GET',
headers: { 'Accept': '*/*' }
}
)
.then ((res) => {console.log(res);return res;})
.catch((err) => response.status(400).send(err))
});
});

我可以看到它会访问url,并在shell模拟器上得到响应,但在浏览器上没有,这不会返回任何结果。

客户端假设使用访问它

var url = "https://us-central1-myproject-6xxxx.cloudfunctions.net/urlToBlob";
$.get(
url,
{url :imgurl, platform : 'xxx'},
function(data) {
console.log(data);
}
);

我知道我做错了,但我必须找到一种方法来使用函数来解决CORS

您是否尝试过使用nodejs中的cors-lib。您可以为cors进行配置,以允许在您的实例中使用cors。首次安装cors-lib:

npm install cors --save

之后,您可以在主模块应用程序中配置cors。例如:

const cors = require('cors')
//cors config
app.use(cors({
origin: ['https://example.com'] //<-- Here you put the domain you want to call your api
methods: "GET, POST, PUT, DELETE",
optionsSuccessStatus:200,
credentials: true
}))

在您的代码中:

.then ((res) => {console.log(res);return res;})

您应该更改为:

.then ((res) => {
console.log(res);
//return res;
response.status(200).send(res);
})

相关内容

  • 没有找到相关文章

最新更新