首页 > 解决方案 > 无法在客户端上获取来自节点快速服务器的 POST 调用的响应正文

问题描述

我有一个客户端对我托管在 heroku 上的快速服务器进行 Post 调用。

当我进行简单的 POST 调用时,我在客户端上看不到任何响应。然而,我在网络上看到了正确的响应,我只是无法在我想要的地方得到它,即我的客户端 js。

客户端:

               fetch('/getLongToken', {
                method:'post',
                headers: {
                    'Content-Type':'text/plain'
                },
                body: JSON.stringify(orgReqBody)
            }).then(resp => {
                    if(resp == 'NO_LONG_TOKEN'){
                        console.log('no long token ');
                    } else if (resp.body == 'NO_TOKEN'){
                        console.log('NO TOKEN');
                    }
            }).catch(err => {
                    console.log(`the logged error is ${err}`);
            })

特快路线:

    app.post('/getLongToken/', (req, res)=> {
      let orgId = orgToTokenMap.get(JSON.parse(req).orgId);
      if(orgId == undefined){
        res.send({msg:"NO_LONG_TOKEN"});
      } else {
          //some other processing//
      }
})

无论我尝试了什么,即使是一个简单的

res.send('TEST');

我无法在我的客户中得到任何回应。甚至尝试过文本,没有运气的json。

我怀疑是 cors 问题,甚至尝试设置 cors 和 headers 但没有效果。

我一定是在做一些非常根本的错误。你能帮我弄清楚我错过了什么吗?

任何帮助表示赞赏!

标签: node.jsexpressposthttpshttpresponse

解决方案


您正在发送一个对象作为响应,因此您必须在客户端上检查该对象。您还必须知道根据您使用的库(即 Axios 或本机请求)的响应结构如何。假设您的响应对象在您身上,resp您可以:

if (resp.msg === 'NO_LONG_TOKEN') {
  console.log('no long token ');
} else if (resp.msg === 'NO_TOKEN') {
 console.log('NO TOKEN');
}

推荐阅读