Запросы FirebaseAuth заблокированы политикой cors в приложении js - PullRequest
2 голосов
/ 23 января 2020

Я знаю, что подобные вопросы существуют, но я не нашел решения для меня. У меня есть встроенное веб-приложение Flutter, которое компилируется в javascript. Он был у меня на Firebase Hosting. Первый экран в приложении - это страница входа, которая использует FirebaseAuth для регистрации. При первом открытии веб-сайта - все внутренние запросы библиотеки имеют статус сбой. Когда после этого нажимаю CTRL + F5 все работает плавно. Вот сравнение того же первого внутреннего запроса. Слева - успешный, справа - сбой из-за того, что ** был заблокирован политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: значение заголовка «Access-Control-Allow-Credentials» в ответ «», который должен быть «истинным», если режим учетных данных запроса «включать». " left is a successful one, on right one which fails

Я узнал о конфигурации заголовков для хостинга Firebase, поэтому я сделал это:

{
  "hosting": {
    "public": "",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ],
    "headers": [ {

    "source": "**",
    "headers": [ 
    {
      "key": "Access-Control-Allow-Origin",
      "value": "*"
    }, 
    {
      "key": "Access-Control-Allow-Methods",
      "value": "DELETE, POST, GET, OPTIONS"
    },
    {
      "key": "Access-Control-Allow-Headers",
      "value": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
      } 
    ]
  }]
  }
}

В приложении есть простая инициализация firebase в didChangeDependencies с необходимыми данными. Затем FirebaseAuth.instance.signInWithEmailAndPassword (...) По индексу. html раздел о firebase:

<script src="https://www.gstatic.com/firebasejs/7.7.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.7.0/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.7.0/firebase-firestore.js"></script>
<script src="main.dart.js" type="application/javascript"></script>

Я тестировал его в Chrome много раз и всегда терпел неудачу. Только на локальном хосте работает без сбоев

Дополнительная информация: запросы по «обычному» (без очистки кэша) возвращению на страницу: enter image description here запросы после CTRL + F5 на том же сайте: enter image description here URL-адрес моего приложения помечен красным цветом

...