Включение CORS в хостинге Firebase - PullRequest
0 голосов
/ 30 мая 2019

У меня действительно раздражающая проблема с CORS и моей функцией Google Cloud ...

Я получаю сообщение об ошибке:

Доступ к XMLHttpRequest по [ URL-адресу моей функции ] from origin 'http://localhost:4200' заблокировано политикой CORS: Access-Control-Allow-Headers в заголовке запроса не разрешен в ответе перед полетом.

Iveуже пытался обработать его на стороне функции с помощью следующего кода:

if request.method == 'OPTIONS':
        headers = {
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'GET',
            'Access-Control-Allow-Headers': 'Content-Type',
            'Access-Control-Max-Age': '3600'
        }

        return ('', 204, headers)

, а затем добавил в основное возвращение с помощью:

headers = {
            'Access-Control-Allow-Origin': '*'
        }
....

return(json.dumps(data), 200, headers)

это не работает ....

Я также пытался использовать подход заголовков firebase.json, и он тоже не работает ...

даже пытался работать с HttpHeaders в угловом формате, например:

const headers = new HttpHeaders() 
      .set("Access-Control-Allow-Origin", "*") 
      .set("Access-Control-Allow-Methods", "POST, GET, OPTIONS") 
      .set('cache-control', 'no-cache')

также не работает.....

тогда я попытался с прокси (просто чтобы проверить, если это действительно проблема) добавил proxy.config.json и, конечно, в dev это просто работает ...

но проблема в том, что мне нужно иметь возможность загрузить приложение Angular на хостинг Firebaseo как я могу исправить ошибку CORS в бэкэнде?

1 Ответ

0 голосов
/ 30 мая 2019

Один из самых простых способов избавиться от ошибок cors - использовать вызываемые функции.У них также есть пользовательский контекст.Что может быть действительно полезным.

Но если вы хотите создать API.Я бы порекомендовал использовать экспресс и пакет Cors.Вот код, который я использую:

import * as express from 'express';
import * as cors from 'cors';

const app = express();
// cors middleware handles all the cors related issues.
app.use(cors({ origin: '*' }));

// you can add your routes in your app.
app.use('/users', usersRoute);

export const api = functions.https.onRequest(app);
...