Node.js Express.js не всегда отправляет действительный json

Вот экспресс-код

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 == '[removed_email]' && req.body.password == 'testpass'){
 res.send(200, JSON.stringify({token:{id:'longstring',email:'[removed_email]'}}));
 } 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');
1 ответ

Можете ли вы заменить эту строку:

res.send(200, JSON.stringify({token:{id:'longstring',email:'[removed_email]'}}));

с этим и посмотрим, разрешит ли это это. Express делает для вас 200 и JSON.stringify, поэтому не переделывайте их.

res.send({token:{id:'longstring',email:'[removed_email]'}});

licensed under cc by-sa 3.0 with attribution.