J'essaie d'apprendre Express/NodeJS, je travaille avec ide c9. Pour utiliser le cadre de passeport pour l'authentification, je tente de mettre en œuvre un formulaire de connexion très simple, mais lorsque je tente d'envoyer mes informations de connexion à mon serveur, il reçoit les données comme ceci:Express angulaire - JSON étrange recevoir de POST
{ '{"username":"login","password":"pwd"}': '' }
au lieu des données que je me connecte avant d'envoyer:
OBJECT {username: "login", password: "pwd"}
Et JSLint m'a dit que c'est un JSON valide, pourquoi il est envoyer comme clé de l'attribut de l'objet JSON?
Ceci est mon serveur Express:
var application_root = __dirname,
express = require("express"),
path = require("path"),
mongoose = require('mongoose');
var app = express();
mongoose.connect('mongodb://' + process.env.IP + '/database');
app.configure(function() {
app.use(express.bodyParser());
app.use(express.methodOverride());
var allowCrossDomain = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS");
res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
if ('OPTIONS' == req.method) {
res.send(200);
} else {
next();
}
};
app.use(allowCrossDomain);
app.use(app.router);
app.use(express.static(path.join(application_root, "public")));
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.post('/login', function(req, res, next){
var obj = req.body;
console.log(obj);
});
app.listen(process.env.PORT, process.env.IP);
Ceci est mon formulaire HTML:
<div>
Username :
<input ng-model="user.username"/>
Password :
<input type="password" ng-model="user.password"/>
<div class="button" ng-click="login()">Login</div>
</div>
Ceci est mon code AngularJS:
var app = angular.module('app', []).config(function($locationProvider, $routeProvider, $httpProvider) {
$routeProvider
.when('/', {
templateUrl: '/partials/home.html',
controller : 'HomeCtrl'
})
.otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
$httpProvider.defaults.withCredentials = true;
}).controller('HomeCtrl', function($scope, $http) {
$scope.login = function() {
$http.post('http://website.io/login', $scope.user).success(function(data) {
console.log(data);
});
};
})
Il est probablement un problème simple, mais mon cerveau se fige maintenant ... Désolé pour mon anglais et je vous remercie d'avance.
Je ne suis pas sûr mais je pense que c'est: $ httpProvider.defaults.headers.post ['Contenu -Type '] =' application/x-www-forme-urlencoded; charset = utf-8 '; mais application/json n'envoie rien à mon serveur ... – Electron