所以我有一个表单将它的数据发布到我的'/ message'端点。在本地测试以及使用指定的子域(myapp.heroku.com)在heroku上测试时,一切正常。
由于我不想使用myapp.heroku.com,我注册了一个指向heroku子域的域(不同的主机,而不是heroku)。在mydomain.com上测试表单,在我的快速后端给我一个空的req.body。我是否需要在Express中设置CORS标头才能使用?其他一切工作正常,帖子正在发生,只是req.body变空了。内容类型也正确设置(application / json)。
你们遇到过这个问题吗?你是怎么做的?
进行请求的骨干视图助手。我记录了serializeObject输出,一切正常(数据正确,只记录一次)。
handleFormSubmit: function (e) {
var $btn;
e.preventDefault();
if (!this.model) {
// get data and create model
this.model = new app.Models.Message($(e.target).serializeObject());
// setup error/success handlers
this.listenTo(this.model, 'sync', function(a,b,c) {
TweenLite.to('.msgSuccess', 0.3, {opacity: 1, ease:Quad.easeInOut});
$btn.button('reset');
$btn.attr('disabled', 'disabled');
});
this.listenTo(this.model, 'error', function(a,b,c) {
console.log(a, b, c);
$btn.button('reset');
});
// save, initiates the request
this.model.save();
}
}
可以肯定的是,这是主干消息模型。没什么好看的:
app.Models.Message = Backbone.Model.extend({
url: '/message',
});
这是后端的'/ message'视图。正如评论中指出的那样,我正在使用Keystone作为CMS。我删除了所有邮件发送逻辑,以尽可能简化:
exports = module.exports = function(req, res) {
console.log('attempting to send mail..');
console.log(req.body);
};
我认为这些片段不会有太大帮助,因为这不完全是火箭科学,问题显然不在代码中,而是与heroku /域映射有关。