node.js - 使用 firebase 函数解决 CORS
问题描述
如您所知,url
由于CORS
. 我正在尝试创建一个函数,它将使用正确的标头作为代理为我获取文件,并将其返回给客户端。
所以,在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库:
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);
})
推荐阅读
- mongodb - 新用户未在 Mongo DB 中获得身份验证
- masstransit - 如何将相同的队列属性设置 (TTL) 应用于所有 AWS SQS 队列?
- mysql - 在 ruby on rails 的一个查询中更新多条记录
- python-3.x - Pyupdater client.update_check(APP_NAME,APP_VERSION) 总是返回 none
- javascript - 未处理的拒绝(TypeError):无法使用 Axios 在 React 中读取未定义的属性(读取“协议”)
- php - 如何使用数据库中的 TCPHP 包装表?
- jestjs - 笑话:模拟 observable 和模板
- angular - 两个角度分量之间的通信
- cassandra - Cassandra 服务未在 EC2 上运行
- java - 如何使用java使用foreach循环将用户列表保存到数据库