Есть ли способ установить диапазон IP-адресов ALLOWED_HOSTS в django?Django ALLOWED_HOSTS IPs range
Что-то вроде этого:
ALLOWED_HOSTS = ['172.17.*.*']
Есть ли способ установить диапазон IP-адресов ALLOWED_HOSTS в django?Django ALLOWED_HOSTS IPs range
Что-то вроде этого:
ALLOWED_HOSTS = ['172.17.*.*']
Я разместил билет на Django, однако я показал, что это может быть достигнуто, выполнив следующие действия
from socket import gethostname, gethostbyname
ALLOWED_HOSTS = [ gethostname(), gethostbyname(gethostname()), ]
Обновление создателей осени для Windows 10 нарушило этот метод для меня, так как 'gethostname()' вместо этого возвращал адрес коммутатора Ethernet Hyper-V. Вместо этого вы можете использовать 'ALLOWED_HOSTS = [gethostname(),] + gethostbyname_ex (gethostname()) [2]'. –
Нет, это не возможно в настоящее время. Согласно the docs, следующий синтаксис поддерживается:
['www.example.com'] # Fully qualified domain
['.example.com'] # Subdomain wildcard, matches example.com and www.example.com
['*'] # Matches anything
Если посмотреть на реализацию метода validate_host
, вы можете увидеть, что использование *
в качестве шаблона не поддерживается.
Ага, спасибо. Я не смотрел достаточно сильно, чтобы прочитать сам код. – Nez
Я нашел такое решение для диапазона фильтрации IP-адресов из:
https://stackoverflow.com/a/36222755/3766751
Используя этот подход, мы можем фильтровать IP-адреса любых средств (F.E. с регулярным выражением).
from django.http import HttpResponseForbidden
class FilterHostMiddleware(object):
def process_request(self, request):
allowed_hosts = ['127.0.0.1', 'localhost'] # specify complete host names here
host = request.META.get('HTTP_HOST')
if host[len(host)-10:] == 'dyndns.org': # if the host ends with dyndns.org then add to the allowed hosts
allowed_hosts.append(host)
elif host[:7] == '192.168': # if the host starts with 192.168 then add to the allowed hosts
allowed_hosts.append(host)
if host not in allowed_hosts:
raise HttpResponseForbidden
return None
Спасибо за @Zorgmorduk
Вот быстрый и грязное решение.
allowed_hosts + = [ '172,17.% S.% S' % (I, J) для я в диапазоне (256) для J в диапазоне (256)]
Я собирался ответить "да", но сделал некоторые ковышки google и не может найти конкретный пример, где кто-то это сделал. Согласно [docs] (https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts), вы можете использовать одиночный шаблон в списке, например 'ALLOWED_HOSTS = ['*'] ', (что не рекомендуется по соображениям безопасности), но я не видел ничего подобного вашему примеру. Я все еще склоняюсь к «да», но я буду не убежден, пока не увижу ссылку, в которой это явно указано. Это может быть глупый вопрос, но попробовали ли вы проверить, не вызовет ли он каких-либо ошибок в django? – Nez
Было бы лучше разгрузить это на веб-сервер, который был сделан для эффективного управления этим. Или, может быть, даже настроить правила брандмауэра, чем выше в стеке трафик, тем лучше. – serg
@Nez, да я. Посмотрите на мой ответ ниже. Я нашел решение этой проблемы. –