我们从Python开源项目中,提取了以下9个代码示例,用于说明如何使用django.core.exceptions.DisallowedHost()。
def get_host(self): """Return the HTTP host using the environment or request headers.""" host = self._get_raw_host() # There is no hostname validation when DEBUG=True if settings.DEBUG: return host domain, port = split_domain_port(host) if domain and validate_host(domain, settings.ALLOWED_HOSTS): return host else: msg = "Invalid HTTP_HOST header: %r." % host if domain: msg += " You may need to add %r to ALLOWED_HOSTS." % domain else: msg += " The domain name provided is not valid according to RFC 1034/1035." raise DisallowedHost(msg)
def process_request(self, request): host = self.get_host(request) domain, port = split_domain_port(host) if not domain: raise DisallowedHost(f'Invalid HTTP_HOST header: {host}.') request.host = domain request.port = int(port) if port else None event_slug = resolve(request.path).kwargs.get('event') if event_slug: event = get_object_or_404(Event, slug__iexact=event_slug) request.event = event if event.settings.custom_domain: custom_domain = urlparse(event.settings.custom_domain) event_domain, event_port = split_domain_port(custom_domain.netloc) if event_domain == domain and event_port == port: request.uses_custom_domain = True return else: request.needs_redirect = True return redirect(urljoin(event.settings.custom_domain, request.path)) default_domain, default_port = split_domain_port(settings.SITE_NETLOC) if domain == default_domain: return if settings.DEBUG or domain in LOCAL_HOST_NAMES: return raise DisallowedHost(f'Unknown host: {host}')
def get_host(self): """Returns the HTTP host using the environment or request headers.""" # We try three options, in order of decreasing preference. if settings.USE_X_FORWARDED_HOST and ( 'HTTP_X_FORWARDED_HOST' in self.META): host = self.META['HTTP_X_FORWARDED_HOST'] elif 'HTTP_HOST' in self.META: host = self.META['HTTP_HOST'] else: # Reconstruct the host using the algorithm from PEP 333. host = self.META['SERVER_NAME'] server_port = str(self.META['SERVER_PORT']) if server_port != ('443' if self.is_secure() else '80'): host = '%s:%s' % (host, server_port) # There is no hostname validation when DEBUG=True if settings.DEBUG: return host domain, port = split_domain_port(host) if domain and validate_host(domain, settings.ALLOWED_HOSTS): return host else: msg = "Invalid HTTP_HOST header: %r." % host if domain: msg += " You may need to add %r to ALLOWED_HOSTS." % domain else: msg += " The domain name provided is not valid according to RFC 1034/1035." raise DisallowedHost(msg)
def get_data_from_request(self, request): if request.method != 'GET': try: if hasattr(request, 'body'): # Django 1.4+ raw_data = request.body else: raw_data = request.raw_post_data data = raw_data if raw_data else request.POST except Exception: # assume we had a partial read: data = '<unavailable>' else: data = None environ = request.META result = { 'body': data, 'env': dict(get_environ(environ)), 'headers': dict(get_headers(environ)), 'method': request.method, 'socket': { 'remote_address': request.META.get('REMOTE_ADDR'), 'encrypted': request.is_secure() }, 'cookies': dict(request.COOKIES), } if hasattr(request, 'get_raw_uri'): # added in Django 1.9 url = request.get_raw_uri() else: try: # Requires host to be in ALLOWED_HOSTS, might throw a # DisallowedHost exception url = request.build_absolute_uri() except DisallowedHost: # We can't figure out the real URL, so we have to set it to # DisallowedHost result['url'] = {'raw': 'DisallowedHost'} url = None if url: result['url'] = get_url_dict(url) return result