Wednesday, November 20, 2013

Non-Ascii Characters in URL causes crash

I have a slightly weird issue.  Someone is sending http requests with Chinese characters in the URL.  Ok, it's probably just Chinese hackers trying something.  But it's causing Django to fall over with a UnicodeEncodeError in the response.

I'm thinking this must be a bug in Django as the response is generated by Django itself.

I have flatpages turned on, and obviously this url doesn't match anything I have in flatpages so it's somewhere in the flatpage not found path.  I also have I18N turned on.

I'm running Django version 1.4.8.  Below is the traceback.

Should I just ignore this?

Peter

Traceback (most recent call last):      File "/home/peter/django-ductedit/django/core/handlers/base.py", line 92, in get_response      response = callback(request, *callback_args, **callback_kwargs)      File "/home/peter/django-ductedit/django/contrib/flatpages/views.py", line 23, in flatpage      return HttpResponseRedirect("%s/" % request.path)      File "/home/peter/django-ductedit/django/http/__init__.py", line 407, in __init__      self['Location'] = redirect_to      File "/home/peter/django-ductedit/django/http/__init__.py", line 320, in __setitem__      header, value = self._convert_to_ascii(header, value)      File "/home/peter/django-ductedit/django/http/__init__.py", line 309, in _convert_to_ascii      value = value.encode('us-ascii')    UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-13: ordinal not in range(128), HTTP response headers must be in US-ASCII format      <WSGIRequest  GET:<QueryDict: {}>,  POST:<QueryDict: {}>,  COOKIES:{},  META:{'DOCUMENT_ROOT': '/home/peter/public_html/',   'GATEWAY_INTERFACE': 'CGI/1.1',   'HTTP_ACCEPT': '*/*',   'HTTP_ACCEPT_ENCODING': 'gzip, deflate',   'HTTP_HOST': 'www.plandroid.com',   'HTTP_REFERER': 'http://www.baidu.com',   'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0',   'HTTP_X_FORWARDED_FOR': '183.60.243.188',   'HTTP_X_FORWARDED_PROTO': 'http',   'HTTP_X_HOST': 'www.plandroid.com',   'PATH_INFO': u'/template/\u8bf7\u52ff\u5220\u96646kbbs\u6a21\u677f.txt',   'PATH_TRANSLATED': '/home/peter/public_html//template/\xe8\xaf\xb7\xe5\x8b\xbf\xe5\x88\xa0\xe9\x99\xa46kbbs\xe6\xa8\xa1\xe6\x9d\xbf.txt',   'QUERY_STRING': '',   'REDIRECT_STATUS': '200',   'REDIRECT_URI': '/django.fcgi/template/\xe8\xaf\xb7\xe5\x8b\xbf\xe5\x88\xa0\xe9\x99\xa46kbbs\xe6\xa8\xa1\xe6\x9d\xbf.txt',   'REMOTE_ADDR': '183.60.243.188',   'REMOTE_PORT': '15624',   'REQUEST_METHOD': 'GET',   'REQUEST_URI': '/template/\xe8\xaf\xb7\xe5\x8b\xbf\xe5\x88\xa0\xe9\x99\xa46kbbs\xe6\xa8\xa1\xe6\x9d\xbf.txt',   'SCRIPT_FILENAME': '/home/peter/public_html/django.fcgi',   'SCRIPT_NAME': u'',   'SERVER_ADDR': '127.0.0.1',   'SERVER_NAME': 'www.plandroid.com',   'SERVER_PORT': '62305',   'SERVER_PROTOCOL': 'HTTP/1.0',   'SERVER_SOFTWARE': 'lighttpd',   'wsgi.errors': <flup.server.fcgi_base.TeeOutputStream object at 0xa5cf44c>,   'wsgi.input': <flup.server.fcgi_base.InputStream object at 0xa5cf22c>,   'wsgi.multiprocess': True,   'wsgi.multithread': False,   'wsgi.run_once': False,   'wsgi.url_scheme': 'http',   'wsgi.version': (1, 0)}>    

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/7428b624-197e-4e03-b78f-f952ae99bd8a%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment