CORS проблемы с облачными функциями - PullRequest
0 голосов
/ 11 ноября 2019

Временные проблемы с 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 с облачными функциями?

...