【问题标题】:strange UnicodeDecodeError on djangoDjango上奇怪的UnicodeDecodeError
【发布时间】:2013-09-27 05:44:17
【问题描述】:

正在重新安装我的 vagrant box 和我的开发环境,当尝试运行我的 django 项目时,我收到以下错误。有什么想法吗?

----------------------------------------
[21/Sep/2013 23:44:03] code 400, message Bad HTTP/0.9 request type ('\x16\x03\x00\x00E\x01\x00\x00A\x03\x00R>u\xa6\x00`b\xceZ\xc8\xe6H2\x85')
----------------------------------------
Exception happened during processing of request from ('10.0.2.2', 60969)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 582, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/home/vagrant/hypnos-venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 150, in __init__
    super(WSGIRequestHandler, self).__init__(*args, **kwargs)
  File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__
    self.handle()
  File "/usr/lib/python2.7/wsgiref/simple_server.py", line 117, in handle
    if not self.parse_request(): # An error code has been sent, just exit
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 281, in parse_request
    "Bad HTTP/0.9 request type (%r)" % command)
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 368, in send_error
    self.send_response(code, message)
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 385, in send_response
    self.log_request(code)
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 422, in log_request
    self.requestline, str(code), str(size))
  File "/home/vagrant/hypnos-venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 162, in log_message
    msg = "[%s] %s\n" % (self.log_date_time_string(), format % args)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa6 in position 15: ordinal not in range(128)

【问题讨论】:

  • 您在浏览器中输入了什么来触发错误?
  • 显然如果我做 127.0.0.1:8888 它工作正常。不知道为什么。
  • 你能确认你运行的是什么版本的 Python 吗?
  • 好像浏览器正在发送二进制乱码 ('\x16\x03\x00\x00E\x01\x00\x00A\x03\x00R>u\xa6\x00b\xceZ\xc8\xe6H2\x85'`)?
  • 另外好奇的是,它显然是来自 10.0.2.2 的连接。我希望 localhost 映射到 127.0.0.1 并且连接来自同一个地址。 /etc/hosts 中的 localhost 是否有一个奇怪的条目?您是否使用 NIS 或任何可能导致 localhost 被解释为不同的东西?

标签: python django http unicode


【解决方案1】:

您似乎尝试使用https 访问http 网站

【讨论】:

  • 我确信这是一个非常常见的错误,带有非常不明显的错误消息。经过 3-4 小时的编码困惑后,我从自己手中救了出来。
  • 哇,这个答案出乎意料,但对我来说 100% 正确。谢谢大佬!
【解决方案2】:

您是否使用 https 进行了尝试?

我遇到了同样的问题,最后发现它应该在开发时使用 http (no s)。 https 加密您的请求,就开发服务器而言,这是一堆乱码。

【讨论】:

    【解决方案3】:

    从堆栈跟踪来看,Django 开发服务器尝试记录请求并失败,因为请求无效。

    原来 BaseHTTPServer 只是记录原始 HTTP 请求的第一行,所以如果您的浏览器在请求中发送垃圾(谁知道为什么),那么开发服务器可能无法尝试记录它。我建议使用开发控制台或 Firebug 来检查浏览器发送的请求标头。如果是这种情况,那么整个情况更像是一个测试环境问题。

    【讨论】:

      猜你喜欢
      • 2014-05-23
      • 2015-05-14
      • 2014-07-05
      • 1970-01-01
      • 2011-06-20
      • 2022-07-21
      • 1970-01-01
      • 2011-06-26
      相关资源
      最近更新 更多