Облачные функции Firebase: метод POST, когда автобусный мальчик блокируется CORS - PullRequest
0 голосов
/ 11 декабря 2018

Имею функцию загрузки с использованием busboy с облачными функциями Firebase. Я получаю эту ошибку.

Доступ к XMLHttpRequest по URL-адресу «облачных функций firebase» из источника «localhost» был заблокирован политикой CORS: НетЗаголовок «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: Невозможно прочитать свойство 'file' с нулевым значением

вот мой код:

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 Ответ

0 голосов
/ 14 декабря 2018

Наконец-то нашел ответ .. тип контента должен быть "multipart / form-data", а не "application / x-www-form-urlencoded" при публикации от реакции.

...