Удаленно обслуживаемый сервис Django, не возвращает ответ на запросы PATCH

Я развернул службу Django rest framework с несколькими API на моем сервере Ubuntu 20.04 с Gunicorn, все работает хорошо, но PATCH запросы извне сервера не получают ответа, хотя приложение получает запрос и полностью его обрабатывает.
Я даже протестировал это с Django runserver и проблема осталась и не имеет ничего общего с Gunicorn.
. Шаги для воспроизведения:

  1. On the server we create a new Django application:
ssh to_my@server
python3 -m pip install django
django-admin mytest
cd mytest
python3 manage.py runserver 0.0.0.0:9999
  1. On the server trying to send requests to the application:
ssh to_my@server
curl --request GET localhost:9999/ # this works fine and we can see the response
curl --request PATCH localhost:9999/ # this works fine too
  1. On another machine try these:
# on my local machine
curl --request GET IP:9999/ # this works fine
curl --request PATCH IP:9999/ # **** this will get a `curl: (56) Recv failure: Connection reset by peer` after some times

Ответ так и не приходит, хотя в консоли видно, что запрос полностью получен и Django не испытывает проблем:

Invalid HTTP_HOST header: '207.154.246.122:9999'. You may need to add '207.154.246.122' to ALLOWED_HOSTS.
Bad Request: /
[02/Nov/2021 11:18:25] "PATCH / HTTP/1.1" 400 62827

Пожалуйста, игнорируйте исключение, оно не имеет никакого отношения к нашей проблеме.
Обратите внимание, что это минимальное развертывание, я обслуживаю через HTTP, а не HTTPS, и порт уже открыт, я знаю, что могу использовать PUT вместо метода PATCH, и я не использую NGINX, просто пересылаю его напрямую.
Мой вопрос: что вызывает такое поведение? это операционная система? и как я могу решить эту проблему и получить ответ от моих PATCH запросов?

После некоторого расследования я обнаружил, что я могу послать запрос Patch на сервер и получить ответ от другого сервера , это означает, что моя клиентская сеть блокировала ответ от сервера, В то время я использовал сеть Irancell, и если у вас есть подобная проблема, это дело вашего провайдера, и если это необходимо, вы должны связаться с ними, в конце концов, все, что связано с этими технологиями, работает очень хорошо...
. Но мой вопрос перерос в то, как провайдер может решить и заблокировать ответ только на метод Patch? Возможно, я задам его в другом вопросе и добавлю ссылку сюда позже...

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