क्या django में ALLOWED_HOSTS आईपी की एक श्रृंखला सेट करने का कोई तरीका है?Django ALLOWED_HOSTS आईपी रेंज
कुछ इस तरह:
ALLOWED_HOSTS = ['172.17.*.*']
क्या django में ALLOWED_HOSTS आईपी की एक श्रृंखला सेट करने का कोई तरीका है?Django ALLOWED_HOSTS आईपी रेंज
कुछ इस तरह:
ALLOWED_HOSTS = ['172.17.*.*']
के लिए मैं Django पर एक टिकट तैनात हालांकि मैं दिखाया गया था इस निम्नलिखित
from socket import gethostname, gethostbyname
ALLOWED_HOSTS = [ gethostname(), gethostbyname(gethostname()), ]
विंडोज 10 के लिए पतन निर्माता अद्यतन ने मेरे लिए यह विधि तोड़ दी, क्योंकि 'gethostname()' इसके बजाय हाइपर-वी ईथरनेट स्विच पता लौटा रहा था। आप '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
मैंने पाया:
https://stackoverflow.com/a/36222755/3766751
इस दृष्टिकोण का उपयोग करते हुए हम किसी भी तरह (regex के साथ उदा) द्वारा आईपी फ़िल्टर कर सकते हैं।
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 + = [के लिए मैं सीमा में j (256) के लिए सीमा (256) में '172.17।% S।% S'% (i, j)]
के बारे में मैं "हाँ" जवाब देने के लिए था, लेकिन कुछ गूगल खुदाई की और एक विशिष्ट उदाहरण नहीं मिला जहां किसी ने यह किया है। [डॉक्स] (https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts) के अनुसार, आप सूची में एकमात्र वाइल्डकार्ड का उपयोग कर सकते हैं, जैसे 'ALLOWED_HOSTS = ['*'] ', (सुरक्षा कारणों से अनुशंसित नहीं है) लेकिन मैंने अभी तक आपके उदाहरण की तरह कुछ भी नहीं देखा है। मैं अभी भी "हां" की ओर झुका रहा हूं लेकिन जब तक मैं इसे स्पष्ट रूप से बताते हुए एक संदर्भ नहीं देखता तब तक मैं असुविधाजनक रहूंगा। यह एक बेवकूफ सवाल हो सकता है, लेकिन क्या आपने यह देखने की कोशिश की है कि क्या यह django में कोई त्रुटि उठाएगा? – Nez
इसे वेब सर्वर पर ऑफ़लोड करना बेहतर होगा जो इसे कुशलतापूर्वक संभालने के लिए बनाया गया था। या यहां तक कि फ़ायरवॉल नियम भी सेट अप कर सकते हैं, एक ट्रैफिक ढेर में उच्च बेहतर फ़िल्टर किया जा सकता है। – serg
@Nez, हाँ मैं करता हूं। नीचे मेरा जवाब देखें। मुझे इस समस्या का समाधान मिला। –