Смешанное содержимое: Страница по адресу {URL} была загружена по HTTPS, но запросила небезопасную конечную точку XMLHttpRequest {ENDPOINT}.

У меня есть следующие проекты https://github.com/codyc4321/dividends_ui и https://github.com/codyc4321/stocks_backend. Развернутое приложение по адресу https://octopus-app-8l8j5.ondigitalocean.app/ получает ошибку

Mixed Content: The page at 'https://octopus-app-8l8j5.ondigitalocean.app/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://67.205.161.47:8000/dividends/wba'. This request has been blocked; the content must be served over HTTPS.

эту ошибку я получил на прошлой неделе, но теперь я прошел и сделал https://timonweb.com/django/https-django-development-server-ssl-certificate/ и запускаю сервер python с https:

root@username:~/stocks_backend# python3 manage.py runserver_plus --cert-file cert.pem --key-file key.pem 

Я не понимаю, почему мое приложение не работает для запроса, хотя я заметил, что ДО использования файла cert я мог попасть в конечную точку с моей локальной машины просто отлично, а теперь после этого моя локальная машина получает Error: connect ECONNREFUSED 67.205.161.47:8000

Я сделал ключевой файл таким

mkcert -cert-file cert.pem -key-file key.pem octopus-app-8l8j5.ondigitalocean.app octopus-app-8l8j5 ondigitalocean.app 

Почему запуск сервера с использованием cert и key файлов для https не достаточен для выполнения этого api запроса? Спасибо

В вашем App.js file в dividends_ui

есть строка
const base_url = 'http://' + HOST + ':8000'

У меня есть подозрение, что это происходит потому, что при вызове URL, который он конструирует, он вызывает http URL из среды https, что представляет риск для безопасности.

Если домен HOST всегда будет использовать https, то измените его на

const base_url = 'https://' + HOST + ':8000'

должно помочь. Если вы не уверены, то

const base_url = '//' + HOST + ':8000'

может решить проблему, поскольку будет использовать протокол вызывающей страницы, но, очевидно, явное использование https обычно является лучшим методом.

Вернуться на верх