[Django] #27853: When AdminEmailHandler is configured with include_html, DisallowedHost causes a 500 instead of a 400

8 views
Skip to first unread message

Django

unread,
Feb 17, 2017, 2:16:17 AM2/17/17
to django-...@googlegroups.com
#27853: When AdminEmailHandler is configured with include_html, DisallowedHost
causes a 500 instead of a 400
------------------------------------------+------------------------
Reporter: Douglas Thrift | Owner: nobody
Type: Bug | Status: new
Component: Core (Mail) | Version: 1.8
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
------------------------------------------+------------------------
It looks like when `AdminEmailHandler` is configured with include_html a
`DisallowedHost` causes a 500 instead of a 400 because it is trying to
render the HTML error page for that to include in the email, but trying to
render that HTML is triggering its own `DisallowedHost` because it thinks
it is being requested by the same disallowed host rather than ignoring it
since it is rendering for an email.

{{{
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/usr/local/lib/python2.7/site-
packages/django/core/handlers/wsgi.py", line 189, in __call__
response = self.get_response(request)
File "/usr/local/lib/python2.7/site-
packages/django/core/handlers/base.py", line 204, in get_response
'request': request
File "/usr/local/lib/python2.7/logging/__init__.py", line 1193, in error
self._log(ERROR, msg, args, **kwargs)
File "/usr/local/lib/python2.7/logging/__init__.py", line 1286, in _log
self.handle(record)
File "/usr/local/lib/python2.7/logging/__init__.py", line 1296, in
handle
self.callHandlers(record)
File "/usr/local/lib/python2.7/logging/__init__.py", line 1336, in
callHandlers
hdlr.handle(record)
File "/usr/local/lib/python2.7/logging/__init__.py", line 759, in handle
self.emit(record)
File "/usr/local/lib/python2.7/site-packages/django/utils/log.py", line
128, in emit
html_message = reporter.get_traceback_html() if self.include_html else
None
File "/usr/local/lib/python2.7/site-packages/django/views/debug.py",
line 384, in get_traceback_html
return t.render(c)
File "/usr/local/lib/python2.7/site-packages/django/template/base.py",
line 210, in render
return self._render(context)
File "/usr/local/lib/python2.7/site-packages/django/template/base.py",
line 202, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python2.7/site-packages/django/template/base.py",
line 905, in render
bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/site-packages/django/template/debug.py",
line 79, in render_node
return node.render(context)
File "/usr/local/lib/python2.7/site-
packages/django/template/defaulttags.py", line 329, in render
return nodelist.render(context)
File "/usr/local/lib/python2.7/site-packages/django/template/base.py",
line 905, in render
bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/site-packages/django/template/debug.py",
line 79, in render_node
return node.render(context)
File "/usr/local/lib/python2.7/site-packages/django/template/debug.py",
line 89, in render
output = self.filter_expression.resolve(context)
File "/usr/local/lib/python2.7/site-packages/django/template/base.py",
line 648, in resolve
obj = self.var.resolve(context)
File "/usr/local/lib/python2.7/site-packages/django/template/base.py",
line 789, in resolve
value = self._resolve_lookup(context)
File "/usr/local/lib/python2.7/site-packages/django/template/base.py",
line 849, in _resolve_lookup
current = current()
File "/usr/local/lib/python2.7/site-packages/django/http/request.py",
line 152, in build_absolute_uri
host=self.get_host(),
File "/usr/local/lib/python2.7/site-packages/django/http/request.py",
line 102, in get_host
raise DisallowedHost(msg)
DisallowedHost: Invalid HTTP_HOST header: 'localhost:8000'. You may need
to add u'localhost' to ALLOWED_HOSTS.
[17/Feb/2017 06:48:12] "GET / HTTP/1.1" 500 59
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/27853>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Feb 17, 2017, 8:13:59 AM2/17/17
to django-...@googlegroups.com
#27853: When AdminEmailHandler is configured with include_html, DisallowedHost
causes a 500 instead of a 400
---------------------------------+--------------------------------------

Reporter: Douglas Thrift | Owner: nobody
Type: Bug | Status: closed
Component: Error reporting | Version: 1.8
Severity: Normal | Resolution: duplicate

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------
Changes (by Tim Graham):

* status: new => closed
* resolution: => duplicate
* component: Core (Mail) => Error reporting


Comment:

Duplicate of #25099 (see ticket:25099#comment:9). It's fixed in Django
1.9.

--
Ticket URL: <https://code.djangoproject.com/ticket/27853#comment:1>

Reply all
Reply to author
Forward
0 new messages