【问题标题】:Firebase hosting rewrites to functions not working as expectedFirebase 托管重写为无法按预期工作的功能
【发布时间】:2019-11-09 07:57:12
【问题描述】:

我正在使用 HTML、CSS 和 JS 构建一个静态网站,并托管在 firebase 托管上并连接一个自定义域。我需要的唯一服务器端功能是从联系表发送邮件。为此,我正在尝试使用 Firebase 云功能。我已经在同一个项目上初始化了函数,并尝试使用 firebase 托管重写将请求重写为 mydomain.com/contact 到联系函数。但是当我尝试在浏览器中访问mydomain.com/contact 时,它会显示以下 403 Forbidden 错误消息。

Error: Forbidden
Your client does not have permission to get URL /contact/contact from this server.

firebase.json

{
  "hosting": {
    "public": "build",
    "rewrites": [{
      "source": "/contact",
      "function": "contact"
    }],
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  }
}

云端功能(未实现实际逻辑)

import * as functions from 'firebase-functions';

exports.contact = functions.https.onRequest((request, response) => {
    response.send("<h1>Contact<h1>");
});

我正在使用 Firebase spark 计划。

【问题讨论】:

    标签: firebase google-cloud-functions firebase-hosting


    【解决方案1】:

    这对我有用:

    "rewrites": [
        {
          "source": "**",
          "function": "myApp"
        }
      ]
    

    而在 express 函数中,

    import * as functions from 'firebase-functions';
    import express from 'express';
    const app = express();
    
    app.get('/contact', (req, res) => {
      res.send("<h1>Contact<h1>");
    };
    
    export const myApp = functions.https.onRequest(app);
    

    【讨论】:

    • 您使用的是快递吗?可以分享完整的功能代码吗?
    【解决方案2】:

    这周我遇到了同样的问题。我从 /user 重写了一个名为 user 的函数,我得到了响应 Your client does not have permission to get URL /user/user from this server.

    我刚刚从 firebase 控制台中删除了这些功能,然后再次部署它们,现在它们可以工作了。部署这样的函数和/或使用宿主重写时一定会出现一些错误,其中重写路径会附加到服务器上的函数 url 路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2016-11-12
      • 1970-01-01
      相关资源
      最近更新 更多