Firebase 云功能:带有 CORS 阻止的总线男孩的 POST 方法
Posted
技术标签:
【中文标题】Firebase 云功能:带有 CORS 阻止的总线男孩的 POST 方法【英文标题】:Firebase cloud functions: POST method with bus boy blocked by CORS 【发布时间】:2019-05-12 01:31:18 【问题描述】:使用带有 Firebase 云功能的 busboy 具有上传功能我一直收到此错误
访问 XMLHttpRequest 在 'firebase 云功能网址' CORS 策略已阻止来自原点“localhost”的: 请求中不存在“Access-Control-Allow-Origin”标头 资源。
我已经包含了 cors:
app.use(cors());
app.use((req, res, next) =>
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers');
res.setHeader('Cache-Control', 'no-cache');
next();
);
我不确定是不是因为我还在使用免费版本...因为我的简单 GET api 有效..
我也遇到了这个错误,但我不确定是不是因为 CORS 阻止了图片上传..
TypeError: 无法读取 null 的属性“文件”
这是我的代码:
const fs = require("fs");
const os = require("os");
const path = require("path");
const Busboy = require("busboy");
const busboy = new Busboy( headers: req.headers );
let uploadData = null;
let origFileName;
busboy.on("file", (fieldname, file, filename, encoding, mimetype) =>
origFileName = filename
const filepath = path.join(os.tmpdir(), filename);
uploadData = file: filepath, type: mimetype ;
file.pipe(fs.createWriteStream(filepath));
);
busboy.on("finish", () =>
const bucket = gcs.bucket(bucketName);
let uuid = UUID();
bucket
.upload(uploadData.file,
uploadType: "media",
metadata:
metadata:
contentType: uploadData.type,
firebaseStorageDownloadTokens: uuid
,
当我使用邮递员时没有遇到错误。
任何帮助将不胜感激..
【问题讨论】:
【参考方案1】:终于找到答案了。从 react 发帖时,内容类型应该是“multipart/form-data”而不是“application/x-www-form-urlencoded”。
【讨论】:
以上是关于Firebase 云功能:带有 CORS 阻止的总线男孩的 POST 方法的主要内容,如果未能解决你的问题,请参考以下文章
Firebase https onCall 功能被 cors 阻止