在iOS Safari上使用Firebase onCall函数提交表单时出现“内部”错误

时间:2019-10-04 22:41:05

标签: ios firebase safari google-cloud-functions autofill

我正在尝试提交表单,但是在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桌面上效果很好,但是由于某些原因,在IOS设备上进行测试时,有时会出现内部错误。起初,我以为只有在使用自动填充功能时才会发生这种情况,但是我进行了更多测试,并且在不使用自动填充功能时也会遇到相同的错误。

令人困惑的是,我的功能代码实际上从未被调用过(我看不到任何firebase函数日志)。这是我在野生动物园中的控制台:

enter image description here enter image description here

为什么此表单不能在ios Safari上提交?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。事实证明,这与使用IPv4的Google Cloud Functions和需要IPv6的Safari有关。我怀疑这将成为一个更大的问题。我必须将所有onCall Firebase函数移至https触发器。为了使https触发器起作用,您必须使用custom domain in Firebase hosting and rewrite to your function endpoint

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

}

,因此现在无需调用https://us-central1-projectId.cloudfunctions.net/contactForm来触发我的api。我打电话给https://customdomain.com/api/contactForm