У меня есть базовая облачная функция node.js.Он принимает запрос и просто возвращает тело сообщения;это не работает правильно, и я пытаюсь отладить с журналами консоли.
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.helloWorld = (req, res) => {
res.set('Access-Control-Allow-Origin', '*');
console.log("req: ");
if (req.method === 'OPTIONS') {
// Send response to OPTIONS requests
res.set('Access-Control-Allow-Methods', 'GET');
res.set('Access-Control-Allow-Headers', 'Content-Type');
res.set('Access-Control-Max-Age', '3600');
res.status(204).send('');
} else {
let message = req.query.message || req.body.message || 'Hello World!';
let rets ={};
rets['message'] = message;
res.status(200).send(JSON.stringify(rets));
}
};
Выше работает нормально.Но если я изменяю строку журнала консоли на это:
console.log("req: " + JSON.stringify(req) );
, я получаю следующую ошибку:
Доступ к выборке в 'https://us -central1-delta-xxxxx-1111111.cloudfunctions.net/getEvents 'from origin' http://localhost:3000' заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.
Я просто не могу понять, почему оператор консоли может повлиять на CORS.Я добавил проверки в приведенном выше коде, чтобы попытаться исправить эти проблемы с CORS
РЕДАКТИРОВАТЬ 1:
Я заметил, что не получаю ошибку CORS, если вместо этого консоль регистрирует тело сообщениязапрос?Ниже работает нормально
console.log(JSON.stringify(req.body) );