Как перенести веб-приложение на https из облачного хранилища? - PullRequest
3 голосов
/ 03 августа 2020

В мои планы не входило устанавливать сервер как nginx, поэтому мое веб-приложение запускается на сервере node.js. Там аналогичные конструкции используются для обозначения определенных страниц:

на сервере:

if(process.env.NODE_ENV === 'production') {
    app.use('/', express.static(path.join(__dirname, '../', 'client', 'dist')))
}
app.use('/api/bonds', bonds);
const port = 80;

на клиенте:

const url = '1.2.3.4:80/api/bonds';
class BondsService {
    static getBonds() {
        return new Promise(async (resolve, reject) => {
            try {
                const res = await axios.get(url);
                const data = res.data;
                resolve(data.map(bond => ({
                    ...bond
                })));
            } catch (e) {
                reject(e);
            }
        })
    }

Я перенес свой домен в cloudflare и установил бесплатный сертификат SSL в гибкий режим. Когда я обращаюсь к приложению через http, все работает, но когда http выдает такую ​​ошибку:

xhr. js: 178 Смешанное содержимое: была загружена страница с 'https://example.com/' через HTTPS, но запросил небезопасную конечную точку XMLHttpRequest 'http://1.2.3.4/api/bonds'. Этот запрос был заблокирован; контент должен обслуживаться через HTTPS.

Как это исправить?

1 Ответ

1 голос
/ 03 августа 2020

У нас было обширное (часовое) обсуждение в чате, и я не знаю, как полностью указать здесь чат, поэтому я просто публикую решение, которое может go помочь вам в правильном направлении:

Если вы являетесь частью организации, то сначала вам нужно проконсультироваться с командой Cloudflare или с контактным лицом из инфра.

  1. Соединение между браузером и облачным сервисом https или нет? если это уже https, то сертификат CA уже является частью браузера / системы или нам нужно явно загрузить его.
  2. Что насчет соединения между cloudflare и node.js сервером - зашифровано оно или нет. ... если он зашифрован, вам также необходимо загрузить сертификаты сервера node.js или сертификаты сервера облачного хранилища в хранилище доверенных сертификатов друг друга. Это будет зависеть от того, является ли это взаимным TLS или нет. Если это будет http-трафик c между облаком и node.js сервером, сертификаты не требуются.

Пожалуйста, получите больше информации о процессе установления связи https / SSL для большей ясности.

...