我当前的项目中有一种奇怪的行为。我在后端使用Node.js,在前端使用Backbone.js。我的Node.js应用程序使用express来提供宁静的服务。如果我导航到路径 127.0.0.1:999/users ,一切都很好,可以正确解析json数据。 实际上我的前端看起来像这样:
//MODELS
var PersonList = Backbone.Collection.extend({
url: "http://127.0.0.1:9999/users"
});
//VIEWS
var PersonListView = Backbone.View.extend({
el : "#page",
render: function(){
var thisView = this;
var personList = new PersonList();
personList.fetch({
success: function(users, xhr){
$(thisView.el).html(users);
},
error: function(err)
{
console.log(err);
}
});
}
});
我的后端看起来如下:
var express = require("express");
var app = express();
var users = [{id: 0,email: "user1@gmail.com"},
{id: 1,email: "userxx@gmail.com"},
{id: 2,email: "user123@gmail.com"}];
app.get("/users", function(request, response){
response.send(users);
});
app.listen(9999);
获取功能不会触发成功事件:(。 我有什么想法吗?
解决: 问题在于后端。不接受主干请求原始标头。将以下代码添加到您的快速应用程序以使其工作。在生产中,请确保将允许的主机存储在单独的配置中。
app.use(function(req, res, next){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With, X-Authtoken, Content-Type");
res.header("Access-Control-Allow-Methods", "HEAD, GET, POST, PUT, DELETE");
next();
});