我有一个 Meteor 应用程序,其客户端js对我的应用程序公开的API(使用Iron-Router实现服务器端)进行jQuery ajax GET
调用。
客户端:
$.get('email/test@test.com/transaction/?transactionId=12344', function (data) { console.log(data); });
服务器API端:
Router.route('/email/:email/transaction',{where: 'server'})
.get(function(){
let email = this.params.email;
let transactionId = this.params.query.transactionId;
if(email === undefined) {
let response = { "error" : true, "message" : "Email required" };
this.response.setHeader('Content-Type', 'application/json');
this.response.statusCode = 403;
this.response.end(JSON.stringify(response));
return;
}
// Create the user
let user = Accounts.findUserByEmail(email);
if(user === undefined) {
Accounts.createUser({
email: email,
password: transactionId,
username: email,
profile: {
"transactionId" : [{transactionId: transactionId, date: moment(new Date())}]
}
});
this.response.setHeader('Content-Type', 'application/json');
this.response.statusCode = 200;
this.response.end(JSON.stringify({"created": true}));
}
else {
this.response.setHeader('Content-Type', 'application/json');
this.response.statusCode = 200;
this.response.end(JSON.stringify({"created": false}));
}
});
在localhost:3000 上运行本地 - 时 - 效果很好!调用端点,创建帐户,并返回200响应代码。
但是,当部署到我的托管服务器时,端点失败并显示net::ERR_EMPTY_RESPONSE
。通过反复试验,我发现删除Accounts.createUser(...)
代码会使端点正确响应,但是 - 当然 - 没有用户创建。
有谁知道为什么Accounts.createUser(...)
会强制端点产生空响应? (net::ERR_EMPTY_RESPONSE
)
我很奇怪它在本地工作,但是,如果我能弄清楚如何在我部署的服务器上创建用户,我不在乎为什么会有差异。