Cors - Access-Control-Allow-Origin Ошибка в облачных функциях Firebase - PullRequest
0 голосов
/ 04 мая 2020

Это ошибка, которую я получаю:

Access to XMLHttpRequest at has been blocked by CORS policy: Response to preflight request 
doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.

Это моя облачная функция:

...
app.use(cors({
  origin: true,
}))
app.use(express.json());
app.use(express.urlencoded({extended: false}));


app.post('/submit', async (req, clientRes) => {
...
}

exports.app = functions.region('europe-west2').runWith({timeoutSeconds: 540, memory: '2GB'}).https.onRequest(app);

Это почтовый запрос, который я делаю со стороны клиента:

axios.post('/submit', body, {headers: {
      // 'Access-Control-Allow-Origin': '*',
      'Content-Type': 'application/json',
    }});

Я попытался установить Access-Control-Allow-Origin: '*', Access-Control-Allow-Origin: mydomain.com, а также Access-Control-Allow-Origin: cloudFunctionDomain.net, но он все еще не работает.

Помощь будет очень признательна.

Ответы [ 2 ]

0 голосов
/ 12 мая 2020

Согласно [1], импорт таким образом работал для многих:

const cors = require('cors')({origin: true});

Как указано в [1], есть также примеры кода, которые вы можете посмотреть здесь [ 2].

[1] Включение CORS в облачных функциях для Firebase

[2] https://github.com/firebase/functions-samples/

0 голосов
/ 04 мая 2020

Вы должны добавить Access-Control-Allow-Origin на сервер, а не на клиент. Поэтому вместо:

app.use(cors({
  origin: true,
}))

Вы должны использовать:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

Источник: https://enable-cors.org/server_expressjs.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...