Ну, не берите в голову никакой ответ от экспертов. Я нашел рабочее решение.
- Сначала я больше не использую пакет 'cors'.
- Я создал промежуточное программное обеспечение для работы с CORS. Итак, мой файл index.ts на стороне сервера выглядит так:
const app = require("express")()
const whitelist = ['https://mysite1.com',
'https://mysite2.web.app',
'http://localhost',
'https://us-central1-mysite2.cloudfunctions.net'] // replace with your domain whitelist
// MIDDLEWARE IF NOT USING cors package
app.use(function (req, res, next) {
const origin : string = req.headers.origin?? ""
if (whitelist.indexOf(origin) !== -1) {
res.setHeader('Access-Control-Allow-Origin', origin);
} else {
res.setHeader('Access-Control-Allow-Origin', '*') // Allow all origin, may be removed if all request must be from whitelisted domain
}
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Request-Method, Access-Control-Request-Headers, Access-Control-Allow-Headers,Origin, X-Requested-With, Content-Type, Accept, Authorization')
res.setHeader('Access-Control-Allow-Credentials', true)
if (req.method === "OPTIONS") {
return res.status(200).json({})
}
next()
})
// api
app.get("/login", playerAuth.login)
Вот и все. Теперь мой API можно вызвать из Chrome / Firefox / Postman и из моего приложения Flutter. Я был немного разочарован, но с некоторым терпением и помощью некоторых статей я наконец нашел решение.
Я надеюсь, что это решение поможет кому-то, кто также борется с проблемой CORS.