Веб-приложение Python Django возвращает ошибку 404 для GET-запроса

Я создал базовое веб-приложение, используя Python Django. В настоящее время реализован только один API, т.е. User/GetUserName.aspx, который возвращает простое сообщение "Hello". Веб-сервис работает на встроенном в Django dev-сервере. API успешно вызывается из браузера по URL 127.0.0.1:8001/User/GetUserName.aspx или 192.168.10.120:8001/User/GetUserName.aspx, а также из PostMan.

Теперь в той же сети есть одно устаревшее устройство, которое обращается к этому API. Я сконфигурировал его с IP-адресом моей машины и портом веб-службы. Когда это устройство обращается к API, оно получает 404 ошибку.

Я провел анализ проблемы и сделал следующие замечания:

  1. Когда я обращаюсь к API из браузера или PostMan, то Django выводит API на консоль в виде GET User/GetUserName.aspx 200.
  2. Когда устройство обращается к API, Django выводит API на консоль в виде GET https://192.168.10.120:8001/User/GetUserName.aspx.
  3. Я также реализовал тот же API в Python Flask, где он работает без проблем.
  4. Прочитав документы устройства, я обнаружил, что устройство всегда устанавливает https соединение с сервером. Однако для некоторых API он устанавливает флаг "verify=false", который отключает проверку сертификата. Для других API он выполняет проверку сертификата.
  5. Я пробовал настроить https сервер с самоподписанным сертификатом, но в этом случае мое веб-приложение даже не принимает запрос, и в консоли не отображается никаких логов.

Может ли кто-нибудь подсказать мне, что я упускаю или делаю неправильно?

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

Попробуйте одно из этих двух решений:

  1. Переведите все на https Для этого запустите django на https. Вы можете использовать django-sslserver чтобы запустить django по https. И сохраните на устройстве sslverify=false (так как оно использует самоподписывающийся сертификат)

    .
  2. Переведите все на http: Убедитесь, что устаревшие устройства запрашивают через протокол http. И Django работает по http. проверьте, что заголовок HSTS должен быть отключен. HSTS

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