@kuzubina

Как делать post и get запросы с https на http?

Всем привет!
Использую на клиенте VUE.JS, сайт висит на https домене, сервер на NODEJS и EXPRESSJS на другом хостинге. При запросе с клиента на сервер (использую axios) браузер выдает ошибку такого вида

Mixed Content: The page at 'https://domain.com' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint '150.160.60.160:5000/api/login'. This request has been blocked; the content must be served over HTTPS.

Суть проблемы я понимаю, что на сервере не защищенное соединение и браузер блокирует такие запросы.
Как лучше решить эту проблему? какие есть способы?
  • Вопрос задан
  • 7346 просмотров
Пригласить эксперта
Ответы на вопрос 5
Aetae
@Aetae Куратор тега JavaScript
Тлен
Правильное решение: получить и установить таки серитиикат для своего сервера. С lets encript это быстро и бесплатно.

Костыль: поставить на сайте:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
По сути это хак, т.к. основное предназначение этого заголовка - заставить всё работать через https, но если браузер не получает ответа по https порту - он разрешает работу по http.
Ответ написан
Lynn
@Lynn
nginx, js, css
Любым способом настроить https у сервера с нодой.

Например настроить обратный прокси на домене сайта.
Ответ написан
Комментировать
@rPman
без локального https прокси post запросы никак (есть опция командной строки браузера отключающая запрет), с get запросами можно попытаться выкрутиться, например картинки загружаются. Пробуйте грузить данные в script type=text/html
Ответ написан
Комментировать
AnnaKnyzzeva
@AnnaKnyzzeva
Увлекаюсь дизайном и немного IT )
Выставлять наружу NodeJS неправильно. Он для этого не предназначен.
Правильная архитектура, это когда все запросы приходят на Nginx, а уже Nginx проксирует их на NodeJS.
В Nginx надо сделать редирект с HTTP на HTTPS принудительный. Тогда все запросы будут зашифрованы.
Можно не изобретать велосипед и не возиться долго с конфигом Nginx. Для организации настройки HTTPS соединения для Nginx есть специальная библиотека которая под капотом все делает - и сертификаты выпускает, и конфиг Nginx правит и сертификаты обновляет автоматически при завершении их строка действия.
Подробнее тут: https://www.nginx.com/blog/using-free-ssltls-certi...
Ответ написан
@zkrvndm
Софт для автоматизации
Выше народ советует поставить SSL-сертификат на свой сервак, но на самом деле это не единственное решение. CORS не будет вам никак мешать, если вы отправляйте запрос с http-домена... и это даёт возможность разных обходных манёвров. Просто на заметку, а так все верно выше говорят - правильный вариант это сертификат.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы