У меня есть веб-приложение, в котором интерфейсная часть выполняется с помощью React (create-реагировать-приложение) и развернута на Heroku.Бэкэнд делается с помощью node.js / express и работает на Amazon EC2.У меня нет проблем с тем, чтобы приложение работало при развертывании внешнего интерфейса на локальном хосте или в Heroku, если я получаю доступ к нему через HTTP как http://myapp.heroku.com. Проблема возникает, когда я обращаюсь к нему по HTTPS (который являетсяпо умолчанию в Heroku) как https://myapp.heroku.com. Когда я делаю это и отправляю запрос на сервер node.js на Amazon EC2, я получаю следующую ошибку:
Error: Network Error
Stack trace:
createError@https://myapp.herokuapp.com/static/js/bundle.js:1555:15
handleError@https://myapp.herokuapp.com/static/js/bundle.js:1091:14
Вот часть ввнешний интерфейс, который отправляет запрос на сервер node.js:
_deflateAscii(valueAscii){
axios.post('//My-EC2-Instance-Here.compute.amazonaws.com:80/deflate/ascii', {inflatedAscii: valueAscii}).then(res => {
this.setState(
{
inflatedAscii: valueAscii,
inflatedHex: res.data.inflatedHex,
deflatedBase64: res.data.deflatedBase64,
deflatedHex: res.data.deflatedHex
},
this._setTextBoxesValues
);
}).catch((err) => {
console.log(err)});
}
Вот модули, которые я использую на стороне сервера:
const express = require('express');
const cors = require('cors');
const http = require('http');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(cors());
И обработка деталей идетзапрос от внешнего интерфейса:
app.post('/deflate/ascii', function(req, res){
try{
console.log('request received');
var inflatedHexValue = convert.asciiToHex(req.body.inflatedAscii);
var deflatedBase64Value = deflate.asciiToBase64(req.body.inflatedAscii);
var deflatedHexValue = deflate.asciiToHex(req.body.inflatedAscii);
}catch(err){
console.log(err);
res.status(500).send(err);
}
response = {
deflatedBase64: deflatedBase64Value,
deflatedHex: deflatedHexValue,
inflatedHex: inflatedHexValue
};
res.end(JSON.stringify(response));
console.log('response sent');
});
Когда я получаю Сетевую ошибку на внешнем интерфейсе, сервер node.js не получает запрос, но я провел некоторую диагностику с Wireshark, и естьи рукопожатие с сервером EC2, но трафик там заканчивается без HTTP-трафика:
TCP-трафик между https://myapp.heroku.com/ и My-EC2-Instance-Here.compute.amazonaws.com
Нужен ли SSL на бэкэнде, если интерфейстакое HTTPS?Из этого поста я понял, что он также может обойтись без Нужен ли нам ssl-сертификат для внешнего интерфейса и внутреннего интерфейса? .В любом случае, это всего лишь курсовой проект, и туда и обратно ходят только бессмысленные строки.