Я пытаюсь отправить push-уведомления между двумя устройствами для крошечного прототипа.Оба они являются приложениями Vue.js со встроенным Firebase SDK, поэтому для реализации потока push-уведомлений я развернул функцию firebase, но когда я вызываю ее с любого из устройств, в качестве ответа принимается ошибка CORS.
Оба устройства (мобильное и настольное) имеют одинаковый клиентский код и знают токены друг друга (хранилище в базе данных реального времени Firebase).Эта функция использует только отправку push-уведомлений через Firebase.
Функция Firebase:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const cors = require('cors')({ origin: true });
admin.initializeApp();
exports.notification = functions.https.onRequest((req, res) => {
return cors(req, res, () => {
if (req.method === "POST") {
return admin.messaging().send(notification)
.then(result => {
console.log(result);
res.status(200).send("ok")
})
.catch(err => res.status(500).send(err));
} else {
return res.status(400).send("Method not allowed");
}
});
});
Код клиента:
send(notification, token) {
return fetch("https://[zone]-[project].cloudfunctions.net/notifications", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ token, notification })
});
}
И ошибка:
Access to fetch at 'https://[zone]-[project].cloudfunctions.net/notifications' from origin 'https://[project].web.app' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.