Временные проблемы с CORS при использовании облачных функций Google. Облачные функции трудны для работы, когда им нужна поддержка разных доменов, и следующее решение работает несколько раз, но не всегда.
Вот мои текущие решения следующей ошибки, которую вы получите от Cloud Function.
Доступ к XMLHttpRequest в CLOUD_FUNCTION_TRIGGER_URL из источника «WHERE_YOU_REQUESTED» заблокирован политикой CORS: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Решение:
const ALLOWED_ORIGINS = ["http://localhost:9090", "https://example.com", "https://sub.example.com"]
exports.handleRequest = (req, res) => {
setCorsHeaders(req, res)
... carry on
};
// Set CORS headers for preflight requests
function setCorsHeaders(req, res){
var originUrl = ""
if(ALLOWED_ORIGINS.includes(req.headers.origin)){
originUrl = req.headers.origin
}
// Allows GETs from origin 'originUrl' with Authorization header
res.set('Access-Control-Allow-Origin', originUrl);
res.set('Access-Control-Allow-Credentials', 'true');
if (req.method === 'OPTIONS') {
// Send response to OPTIONS requests
res.set('Access-Control-Allow-Methods', 'GET,POST');
res.set('Access-Control-Allow-Headers', 'Content-Type');
res.set('Access-Control-Max-Age', '3600');
res.status(204).send('');
}
}
Опять же, эта работа время от времени, но в других случаях дает сбой.
Есть идеи о том, как решить проблемы CORS с облачными функциями?