Как правильно настроить ALLOWED_HOST, чтобы разрешить другим машинам в сети доступ к Интернету
Django сервер на машине TestPC-A , по адресу 192.25.56.120
Я хочу, чтобы он был доступен с компьютера в той же сети 192.25.56.xxx.
что я настроил
1. settings.py
ALLOWED_HOSTS = ["127.0.0.1", "localhost", "TestPC-A" , "0.0.0.0", "192.25.56.120"]
и вот это, в необходимости которого я не уверен:
CSRF_TRUSTED_ORIGINS = [
"http://127.0.0.1",
"https://127.0.0.1",
"http://localhost",
"https://localhost",
"https://TestPC-A",
"http://TestPC-A",
]
2. runserver.bat
@echo off
REM Activate virtual environment in the current terminal session and run server
cmd /k ".venv\Scripts\activate && python manage.py runserver_plus --cert-file cert.pem --key-file key.pem 0.0.0.0:8000"
Я пытался добавить следующее в файл hosts Windows C:\Windows\System32\drivers\etc\hosts
192.25.56.120 TestPC-A
Я перезапускаю сервер, и веб-страница не загружается в веб-браузере другого компьютера https://TestPC-A:8000/
Что еще нужно установить?
Для потомков. Чтобы сделать ваш сервер разработки видимым для других машин в сети.
Предположим, у вас есть две машины machine A
и machine B
. Подключите обе машины к общей сети (это может быть даже wifi вашего мобильного телефона).
Если machine A
будет вашим сервером, т.е. machine A
будет машиной, где все это время находился ваш исходный код, а machine A
будет местом, где вы выполняли команду:
python manage.py runserver
Check the IP address machine A
was assigned on this network. [stackoverflow] Add this IP address to Django settings ALLOWED_HOSTS
[django-docs] list
so that Django will allow the machine to host it.
Если IP-адрес, например, 172.200.42.1
, добавьте это к ALLOWED_HOSTS
и теперь выполните команду:
python manage.py runserver 0.0.0.0:7000 # <—- runserver on port 7000 on this host on this network
Поскольку machine B
подключен к той же сети, что и machine A
, используйте любой http-клиент (даже ваш интернет-браузер может служить) на machine B
для подключения к machine A
, т.е. вашему серверу, используя адрес сокета 172.200.42.1:7000
[1].
[1] Мы будем использовать этот адрес сокета, потому что приложение работает на machine A
, который находится на IP-адресе 172.200.42.1
в сети, а приложение работает на порту 7000
.
Что я сделал:
ALLOWED_HOSTS = ["*"]
- runserver
- Важно: добавьте правило входящих соединений на брандмауэре, разрешите соединения, относящиеся к домену, частным лицам, публичным лицам, TCP ThePort .