【问题标题】:Can't see value of request headers in firebase?在 Firebase 中看不到请求标头的值?
【发布时间】:2018-05-30 19:06:41
【问题描述】:

我执行以下操作:

var headers = new Headers();
headers.append("bunny", "test");
headers.append("rabbit", "jump");
fetch("blahurl.com/someservice", {headers:headers})

在火力基地端:

export const listener = functions.https.onRequest(async (req, res) => {
 for (let entry of req.rawHeaders) {
        console.log(entry); // here I see a 'bunny,rabbit' get printed somewhere
    }

     //However this yields undefined:
     req.headers.bunny

不确定如何获取标头值,我只有标头...

【问题讨论】:

    标签: node.js typescript firebase http-headers google-cloud-functions


    【解决方案1】:

    你应该检查Parsing HTTP requests

    您可以通过这种方法简单地获取请求头:

    req.get('bunny');
    req.get('rabbit');
    

    【讨论】:

    【解决方案2】:

    我在搜索“firebase request header is undefined”时找到了这个答案。

    问题

    我已经编写了一个我要发布到的 firebase 函数(使用 Node JS)。该帖子包含一个标题为“user_token”的标题。在我的代码中,我检索了这样的标头值:

    const userToken = request.header("user_token");
    

    我使用 Firebase CLI 服务器 (firebase serve) 在本地机器上测试了这段代码,它运行良好。

    但是,在我将此代码 (firebase deploy) 部署到我的 Firebase 帐户后,我遇到了问题。将完全相同的标题键/值发布到我的 Firbase URL,我收到错误,因为 userToken 值是 undefined

    解决方案

    最终,将我的代码更改为以下解决了我的问题:

    const userToken = request.get("x-user-token");
    

    @Ben 的回答帮助我指明了正确的方向。最初,我只是将代码更改为:

    const userToken = request.get("user_token");
    

    不幸的是,我最终还是得到了一个未定义的 userToken 值。查看Parsing HTTP requests documentation,我注意到他们的示例标头值键以“x-”开头。将我的标头值键从“user_token”更新为“x-user-token”就可以了。

    【讨论】:

      【解决方案3】:

      看起来问题出在 cors 上,因此将函数的主体移入其中可以正常工作,如下所示:

      const cors = require('cors')({ origin: true });
      
      export const listener = functions.https.onRequest(async (req, res) => {
          cors(req, res, () => {
      

      然后 cookie 开始正确显示...

      我不完全确定为什么,这不是响应,它只是一个请求。

      【讨论】:

        【解决方案4】:

        如果有人仍然有同样的问题,这是打字稿的解决方案:

        首先解决CORS问题:

        import * as cors from 'cors';
        const corsHandler = cors({origin: true});
        
        export const getmBucksShop = functions.https.onRequest((request, response) => {
            corsHandler(request, response, () => {
                //Access Header Values here
                //Your Code Here
            });
        });
        

        不起作用

        console.error(request.headers.authorization);
        

        有效

        console.error(request.headers['authorization']);
        console.error(request.get("authorization"));
        

        所需的依赖项:

            "dependencies": {
            "cookie-parser": "^1.4.3",
            "cors": "^2.8.5",
            "express": "^4.16.4",
            "firebase-admin": "~6.0.0",
            "firebase-functions": "^2.1.0"
          },
        

        【讨论】:

          猜你喜欢
          • 2021-05-05
          • 1970-01-01
          • 2015-04-16
          • 2020-03-09
          • 1970-01-01
          • 2016-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多