Почему я получаю ошибку HTTP 400 на стороне сервера, когда пытаюсь зайти на свой сервер django с мобильного телефона?

Я создал простой, локально работающий сервер django, который предоставляет кнопки для запуска некоторых команд bash на сервере (в настоящее время это мой MacBook Pro). Вывод этих команд затем отображается на сайте.

В общем: Веб-сайт работает нормально, пока я получаю доступ к нему из браузера DuckDuckGo на моем MacBook. Я также пробовал использовать браузер Brave Browser, установленный на моем настольном ПК, - все работает нормально.

Теперь, когда я пытаюсь зайти на сайт с iPhone, соединение устанавливается, кнопки работают, а также исчез текст на кнопках. Но самое главное, я получаю странную ошибку на сервере внутри консоли, которая запускает сервер. Ошибка гласит:

[26/Apr/2024 11:33:04] code 400, message Bad request version ('p¤\x99é4rÙu*\x08\x8dÎ\x06¨A©\x06\x8f?l\x19\x9fz\x97\x00,êê\x13\x01\x13\x02\x13\x03À,À+Ì©À0À/̨À')

[26/Apr/2024 11:33:04] You're accessing the development server over HTTPS, but it only supports HTTP.

Используя WireShark, я сравнил пакетный трафик между iPhone и сервером, а также между настольным компьютером / macbook и сервером.

Очевидно, что телефон пытается использовать HTTPS / TLS для подключения к серверу, в то время как настольный компьютер / macbook подключается с помощью HTTP. Но поскольку это не удается, пакет TLSv1 содержит следующее предупреждающее сообщение:

Alert Message: Level: Fatal (2) Description: Protocol Version (70)

Это означает, что на стороне сервера нет поддержки TLS. Но это не то, чего я хочу добиться в первую очередь. Я просто хочу подключиться к серверу с помощью HTTP.

Но когда я пытаюсь сделать это, специально набрав "http://192.168.1.123:8000/home (ip сервера) в адресной строке на моем телефоне, он все еще пытается установить соединение с помощью HTTPS / TLS, даже если в адресной строке написано "http://...".

После некоторых дальнейших исследований я обнаружил, что особенно мобильные браузеры могут использовать нечто под названием HTST (HTTP Strict Transport Security) для предотвращения рисков безопасности, поскольку мобильные телефоны используются в более незащищенных средах, чем настольные ПК, например в общественных WiFis и так далее.

Теперь мои вопросы:

  1. Что я могу сделать, чтобы иметь возможность использовать мой Django-сайт с мобильного телефона без попыток использовать HTTPS / TLS соединения?
  2. Является ли исследование, которое я провел, правильным подходом к решению этой ошибки или есть что-то, что я упустил?

И последнее: на своем телефоне я также использую браузер DuckDuckGo, но я также пробовал использовать Safari, который тоже не работает.

Можете ли вы подтвердить, что у вас есть эти вещи

ALLOWED_HOSTS=["*"] настольный и мобильный компьютеры должны находиться на тематическом wi-fi, а сервер работать на 0.0.0.0

Ответ на вопрос 1

Вы можете попробовать запустить сервер, используя python manage.py runserver 192.168.1.123:8000

А также вам нужно создать/изменить ALLOWED_HOSTS=["*"] в settings.py

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