我有一个 Node.js,Express 应用程序,用作 Emberjs RESTAdapter 的 REST api。我试图让它在 Windows Azure 上运行。当 Ember 在“/examples/1”上发出 HTTP 请求时,如下所示给我一个 400,错误请求。
故障排除后,错误似乎取决于请求标头内容类型。
- 在网络浏览器中访问“(domain)/users/1”会在浏览器窗口中打印出正确的 json。
运行 Jquery ajax 调用给我以下结果:
这不起作用:
$.ajax({ url: "/users/1", contentType: "application/json; charset=UTF-8" }).done(function(data) { console.log(data); });
但是,当切换到这个时,它可以工作。
$.ajax({ url: "/users/1", contentType: "application/x-www-form-urlencoded; charset=UTF-8" }).done(function(data) { console.log(data); });
现在,如何设置我的 nodejs/azure 解决方案以允许内容类型为“application/json; charset=UTF-8”的 http 请求?
更新
注释后,这是服务器端代码
var express = require('express');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.use(express.bodyParser());
app.use('/', express.static(__dirname + '/WebContent'));
app.use(express.cookieParser());
});
app.get('/:param/:id', function(req, res) {
res.json(200, {user: {id:1, name: 'tester'}} )
});
app.get('/:param', function(req, res) {
res.json(200, {users: [{id:1, name: 'tester'}]})
});
app.listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});