Expressjs在heroku上请求body为空(使用域映射)

时间:2014-12-04 13:24:00

标签: node.js heroku express cross-domain

所以我有一个表单将它的数据发布到我的'/ 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 /域映射有关。

0 个答案:

没有答案