我正在使用HTML,CSS和JS构建静态网站,并托管在Firebase托管上,并连接了自定义域。我唯一需要的服务器端功能是从联系表发送邮件。为此,我正在尝试使用Firebase云功能。我已经在同一项目上初始化了函数,并尝试使用Firebase托管重写将对mydomain.com/contact
的请求重写为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火花计划。
答案 0 :(得分: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);
答案 1 :(得分:0)
这周我遇到了同样的问题。我从/ user重写为一个名为user的函数,并且得到了响应Your client does not have permission to get URL /user/user from this server.
我刚刚从Firebase控制台删除了这些功能,然后再次部署了它们,现在它们可以工作了。部署这样的功能和/或使用托管重写时,偶尔会出现一些错误,其中重写路径会附加到服务器上的函数url路径。