将数据从 angular 发送到不同域上的 express nodejs 服务器 运行

Sending data from angular to express nodejs server running on different domain

所以我正在尝试将 angular 中的一些数据发送到我的 nodejs 服务器。让我从我的代码开始: index.html

<body ng-app="starter">
        <ion-pane>
        <ion-header-bar class="bar-stable">
            <h1 class="title">Ionic Blank Starter</h1>
        </ion-header-bar>
        <ion-content>
        </ion-content>
        </ion-pane>
      <div ng-controller="myCtrl">
            <form>
                <input type="text" ng-model="message">
                <input type="submit" value="Submit" ng-click="submit()">
            </form>
        </div>
  </body>

这是一个带有数据的文本框,然后提交按钮会将消息和设备ID发送到服务器。

app.js

var app = angular.module('starter', []);
app.controller('myCtrl', function($scope, $http) {
    var devToken;
    var push = new Ionic.Push({
          "debug": true
      });
      push.register(function(token) {
          devToken = token;
          console.log("Device token:", token.token);
      });
    
    $scope.submit = function() {
        
        var message = "Hello";
        $http({
            method: 'POST',
            url: 'http://127.0.0.1:8080', 
            token: devToken,
            message: message
            
        })
    }
})

如您所见,我正在尝试抓取一条消息和设备 ID,然后 post 将其发送到我的快递服务器。

server.js

var express = require('express');
var bodyParser = require('body-parser');
var apns = require('apns');
var gcm = require('node-gcm');

var app = express();

var sender = new gcm.Sender('AIzaS.........plD2s8');

var registrationTokens = [];
registrationTokens.push('Insert Device ID here that is passed from app.js');

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.get('/', function(req, res) {
    console.log("DEVICE ID == " + req.body.devToken);
    sender.send("Hello", { registrationTokens: registrationTokens });
    
})

app.listen(8080, function() {
    console.log('running on port 8080');
});

总而言之,我需要帮助获取我提交的数据,以便在我的 nodejs Express 服务器上可用(它运行在与 Angular 应用不同的 domain/port 上)。谁能帮我弄清楚如何从 angular 获取我的数据来表达 nodejs?感谢任何帮助。

谢谢

您需要创建一个路由来捕获 post:

app.post('/', function(req, res) {
    console.log(req.body);
    ...
});

然后前端就可以传你想传什么了

    $http.post("/", {message:message, devToken:devToken}).success(function(message, status) {
        console.log('Message posted');
    })

如果后端与 OP 在评论中所述的来源不同,则需要启用跨源请求。

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();
});

注意:除非真的想允许来自任何地方的请求,否则不要将 * 用于生产。