有人看过吗?

如果我没有在我的角度控制器$ http帖子中包含数据参数,那么将选择并运行快速侧路由,但是如果我添加一个数据元素,它将挂起并且不会选择该路由-最终,Chrome调试器会显示错误:net :: ERR_EMPTY_RESPONSE。

这有效:

              $scope.newAccount = function(){
                 console.log("Got a submit request for new account: " );
                 $http.post("http://localhost:3000/newAccount").success(function( data, status, headers, config ){
                 console.log("SUCCESS on NEW ACCOUNT");
                 $scope.mode = data;
              }).error(function(data, status, headers, config) {
                 console.log("Got ERROR");
              });};


这不起作用:

              $scope.newAccount = function(){
                 console.log("Got a submit request for new account: " );
                 $http.post("http://localhost:3000/newAccount",{info:"toSend"}).success(function( data, status, headers, config ){
                 console.log("SUCCESS on NEW ACCOUNT");
                 $scope.mode = data;
              }).error(function(data, status, headers, config) {
                 console.log("Got ERROR");
              });
              };


这是Express处理程序,不会更改(删除了实际逻辑):

    app.post('/newAccount', function (req, res) {

        console.log("GOT A POST REQUEST: " );
             ....some code here
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.send( "successful post" );
    });

最佳答案

因此,事实证明,此问题与远程访问授权有关。 Chrome调试器提供了一些相当糟糕的信息。 Firefox调试器更加清晰。以前,我已经设置了res.header(“ Access-Control-Allow-Origin”,“ *”);在发送响应之前直接在路由处理程序中。这解决了没有数据元素的原始调用的相同问题。但是,为了使它与数据元素一起使用,必须在我的Express应用程序中添加以下内容-而不是在路由处理程序本身中进行设置。可以肯定,这是一种更好的编程实践,但是我只是想了解一些有关Node / Express的知识。在这个上浪费了很多时间。

    app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
    });

关于angularjs - Angular $ http发布到Express挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28490951/

10-15 23:58