Не удается перенаправить с заголовками 302/301 в безсерверном приложении NodeJS - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь получить сервис с Express и Axios и работает нормально ... на базовом helloworld.

Я пробовал delpoys на Heroku и Openode, эти два в порядке и работают, даже если сервержурналы выглядят хорошо, но когда дело доходит до перенаправления, браузер страниц просто ничего не делает.

Конечно, на локальном сервере / сети выглядит хорошо, но, оказавшись в облаке, я не могу перенаправить его на www.google.com, например.

Вот мой код

    #!/usr/bin/env node
'use strict'

var express = require("express");
var app = express();
var axios = require("axios");
var bodyParser = require("body-parser");
var multer = require("multer");
var device = require('express-device');


app.use(device.capture());
//---------------------------------------------------------------------
app.set("trust proxy", true);

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});
app.use(bodyParser.json()); // parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true })); // parse multipart/form-data
app.use(multer());


//-----------------------------------------------------------------------

const port = process.env.PORT || 3000
app.listen(port, () =>
    console.log(`Server is listening on port ${port}.`)
)

app.get('/', (req, res) => res.send('Hello world!'))



app.get('/:parametroUrl', async function (req, res) { 
    var parametro = req.params.parametroUrl
    var dataObjectModel = {
        "body": {
            "request": {
                "data":
                {
                    "id": parametro
                }
                ,
                "objectDTO": null
            },
            "response": null
        }
    };

    return new Promise(resolve => {
        axios
            //url to make it fail
            .post(
                'http://172.16.14.38:7001/x/api/url/redirecturl',
                dataObjectModel
            )
            .then(response => {
                rastreoUrl = response.data.body.response.data

                res.writeHead(302, { Location: '' + rastreoUrl + '' });

                res.end();

            })
            //should enter here and redirect to google
            .catch(reason => {

                console.log("-----------------GOOGLE-----------------------------")

                res.writeHead(302, { Location: '' + 'https://www.google.com' + '' });

                res.end();



            });
    });

});
...