我正在尝试提交表单,但是在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函数日志)。这是我在野生动物园中的控制台:
为什么此表单不能在ios Safari上提交?
答案 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