当我使用<form>和POST方法触发Firebase http函数时,如何获取查询参数?

时间:2018-02-09 20:52:07

标签: firebase httprequest google-cloud-functions

我试图以安全的方式将一些查询参数传递给Firebase中的http函数。我的params并不像密码等那样敏感,它们是一些布尔值,它们决定了逻辑服务器端。

当我尝试使用方法<form>GET的简单PUT时,res.query会在我使用POST时显示值。

  <form id="form" action="https://us-central1-***.cloudfunctions.net/myfuncName" 
   method="post">
  <input type="text" name="id" value="test">
  </form>

我通过Javascript提交表单

this.getElementById("form").submit();

在我的功能中我有:

function(req, res) {
    const param = req.query;
    console.log('query param is ' , param); //{} when form method is POST 
}

我希望能够在我的函数中从res.query获取id,但是我得到null {}。如果我将方法更改为GET或PUT,那么我会看到{id:test}。

任何关于加强安全性的建议也会受到重视。谢谢。

1 个答案:

答案 0 :(得分:3)

res.query允许您从请求的查询字符串中获取参数。 POST请求不使用查询字符串,因此您无法使用res.query。 POST将参数发送到请求正文。

要访问请求正文中来自表单的POST参数,您可以使用Cloud Functions documentation中所述的req.body