Как смоделировать POST-запрос калитки с помощью NodeJS? - PullRequest
0 голосов
/ 12 ноября 2018

Обзор

Недавно я пытался использовать NodeJS для имитации POST-запросов калитки.

То есть, загрузив форму на текущей веб-странице (скажем, site 1 ), я хочу, чтобы nodeJS отправил данные формы на другой сайт (скажем, site 2 ), созданный с использованием wicket, и верните HTML-текст site 2 на сервер site 1 (то есть nodeJS)

Ресурс

Сайт 2 , который я использую для тестирования от github:
https://github.com/bitstorm/Wicket-tutorial-examples/tree/wicket-6.x
Обратите внимание, что калитка 6.x (на самом деле я хочу 6.12.0) используется.

На моем компьютере он работает на localhost:8080

HTML у меня есть:

<body ng-app="App" ng-controller="Controller">
    username: <input type='text' ng-model="User.name"><br>
    password: <input type='text' ng-model="User.pass"><br>
    <button ng-click="login(User)">Submit</button>
</body>

AngularJS у меня есть:

var commodity_app = angular.module('App', []);

commodity_app.controller('Controller', function($scope, $http, $window){
    $scope.User = {name: "", pass: ""};

    $scope.login = function(User){
        $http.post("/login", User).then(function(response){
            alert(response.body);
        }, function(response){
            alert("Error");
        });
    };
});

Вопрос

Это часть NodeJS, которую я хочу, чтобы она имитировала POST для калитки и возвращала тело html, которое калитка перенаправляет на:

var express = require('express');
var request = require('request');
var router = express.Router();

router.post("/login", function(req, res){
    console.log(req.body);
    var url = 'http://localhost:8080/wicket/bookmarkable/org.wicketTutorial.SignInPage?-1.IFormSubmitListener-form';
    var bodyString = "form1_hf_0=&username=wicketer&password=wicketer";
    var forms = {"form1_hf_0": '',"username": "wicketer", "password" : 'wicketer'}
    var header =   {"Content-Length": "47",
                    "Content-Type": "application/x-www-form-urlencoded",
                }
    request.post({url:url, followAllRedirects: true, form: bodyString, headers: header}, function(error, response, body){
        console.log(response.statusCode);
        console.log(response.body);
        res.send({msg: ""});
    });

});

module.exports = router;

Я пытался отправить данные, используя body, form, formData, но это не работает.

Может кто-нибудь помочь мне решить эту проблему?

...