【问题标题】:"Internal" Error When Submitting Form With Firebase onCall Function on IOS Safari在 IOS Safari 上使用 Firebase onCall 功能提交表单时出现“内部”错误
【发布时间】:2020-02-03 05:35:35
【问题描述】:

我正在尝试提交表单,但在 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 函数日志)。这是我在 Safari 中的控制台:

为什么这个表单不能在 ios safari 上提交?

【问题讨论】:

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


    【解决方案1】:

    我解决了这个问题。事实证明,这与 Google Cloud Functions 是 IPv4 和 Safari 需要 IPv6 有关。我怀疑这将成为一个更大的问题。我不得不将所有 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

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2014-03-18
      • 1970-01-01
      • 2019-09-30
      • 2018-07-14
      • 2018-07-12
      相关资源
      最近更新 更多