1

这是一个快速服务器代码:

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

app.use(express.bodyParser());
app.use(express.static('public'));
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'someuser',
  password : 'somepassword',
  database: 'some_database'
});

connection.connect();
app.get('/users/authenticate', function(req, res){
res.setHeader('Content-Type', 'application/json');
res.send({test:"test"});
res.end();

});

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

现在,当我向此 API 发出获取请求时,尽管响应代码为 200 ok,但我在网络控制台的响应选项卡中什么也得不到。请阐明一些观点。我希望这里有 JSON 数据。这是我在控制台中得到的:

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

1

尝试使用:

app.get('/users/authenticate', function(req, res){
    res.json({foo:'bar'});
});

此外,如果您跨不同域执行此操作,则需要设置 CORS。

var allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
}

app.configure(function() {
    app.use(allowCrossDomain);
}

...如果您尝试从 localhost 测试 CORS,则需要在禁用某些安全性的情况下打开 Chrome。如果您使用的是 Mac,则使用以下命令完成。只需确保 Chrome 在运行之前已关闭。

`open -a Google\ Chrome --args --disable-web-security`
于 2013-06-27T14:56:42.050 回答
0

代码没问题。我从浏览器和使用都得到 {test:"test"}

curl http://localhost:3000/users/authenticate
于 2013-06-27T12:00:46.530 回答