将数据从 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();
});
注意:除非真的想允许来自任何地方的请求,否则不要将 * 用于生产。
所以我正在尝试将 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();
});
注意:除非真的想允许来自任何地方的请求,否则不要将 * 用于生产。