【问题标题】:Node.js Express.js not always sending valid jsonNode.js Express.js 并不总是发送有效的 json
【发布时间】:2013-07-01 19:56:37
【问题描述】:

这里是快递代码

app.post('/v1/sessions' function(req,res){
    res.send({id:1234});
});

由于某种原因,json 响应像这样返回

OK{ id: 1234}

为什么那里没问题?

编辑

好的,这就是我所有的代码。我看不出它会将 OK 发送到哪里。

var express = require('express');
var app = express();

app.enable('trust proxy');
app.use(express.bodyParser());

app.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
});

app.post('/v1/sessions', function(req, res) {
  if(req.body.email == 'testuser@captusr.com' && req.body.password == 'testpass'){
    res.send(200, JSON.stringify({token:{id:'longstring',email:'testuser@captusr.com'}}));
  } else {
    res.send({code:403, error:"Invalid email or password"});
  }
});

app.all('*', function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, DELETE, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, Origin, Accept');
  res.header('Access-Control-Allow-Credentials', 'true');

  if (req.method.toLowerCase() === 'options') {
    res.send(200);
  } else {
    next();
  }
});

app.listen(3000);
console.log('Listening on port 3000');

【问题讨论】:

  • 这不是您的全部代码。您正在某处发送OK
  • 当您说“响应像这样返回”时,您究竟是如何确定这一点的?你用的是什么工具。 “OK”是与200状态码对应的文本,所以有些工具可能会把它放在那里。您是否尝试过 curl 或查看 webkit 开发工具网络选项卡?
  • 我在为android移动浏览器调试时在weinre中看到了它。在 chrome 中一切正常,但在 android native 上却没有。在网络视图中,您可以看到标题,有时内容会正常,有时则不会。当它正常时,浏览器认为它是 mime 类型 application/octet-stream

标签: json node.js express http-headers


【解决方案1】:

你能不能把这行替换掉:

res.send(200, JSON.stringify({token:{id:'longstring',email:'testuser@captusr.com'}}));

用这个看看能不能解决。 Express 会为你完成 200 和 JSON.stringify,所以不要重做。

res.send({token:{id:'longstring',email:'testuser@captusr.com'}});

【讨论】:

  • 感谢您的建议。它具有相同的效果。我现在认为这与我处理预检选项的方式有关,但我仍然卡住了,因为我使用的代码似乎对其他人都有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 2016-04-07
  • 2020-06-27
  • 2023-03-18
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多