«Внутренняя» ошибка при отправке формы с функцией onball Firebase в IOS Safari - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь отправить форму, но получаю «внутреннюю» ошибку после отправки в IOS Safari. Произошло на двух отдельных устройствах. Я использую функции Firebase onCall. Код клиента:

var contactForm = 
window.firebase.functions().httpsCallable('contactForm');
let result = await contactForm({ accountUID, foldersFilter, 
firstName, lastName, email, cellNumber, dobDay, dobMonth })

И код сервера:

exports.contactForm = functions.https.onCall(( data, context ) => {
   return contactForm.contactForm( data, context  )
});

Эта функция вызывается через форму. Форма отлично работает на Chrome, Safari Desktop, но по какой-то причине иногда возникает внутренняя ошибка при тестировании на устройстве IOS. Сначала я думал, что это произошло только тогда, когда я использовал автозаполнение, но я проверил больше и получаю ту же ошибку, когда тоже не использую автозаполнение.

Смущает то, что мой код функции фактически никогда не вызывается (я не вижу никаких журналов функций Firebase). Вот моя консоль в safari:

  • Сетевое соединение потеряно.
  • Fetch API не может загрузить https://us -central1-projectId.cloudfunctions.net / contactForm из-за проверок контроля доступа
  • Не удалось загрузить ресурс: сетевое соединение было потеряно.
  • внутреннее

enter image description here enter image description here

Почему эта форма не отправляется в ios safari?

1 Ответ

0 голосов
/ 06 октября 2019

Я исправил проблему. Оказывается, это связано с тем, что облачные функции Google являются IPv4, а Safari требует IPv6. Я подозреваю, что это станет большей проблемой в будущем. Я должен переместить все функции onCall Firebase на триггеры https. Чтобы заставить триггеры https работать, вы должны использовать пользовательский домен на хостинге Firebase и переписать его на конечную точку функции .

 {
 "hosting": {
     ...
   "rewrites": [
     {
      "source": "/api/contactForm",
      "function": "contactForm"
     }

}

и теперь вместо вызова https://us -central1-projectId.cloudfunctions.net / contactForm для запуска моего API. Я звоню https://customdomain.com/api/contactForm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...