Django:400错误的请求语法 - 这个消息是什么意思?

Mir*_*iam 54 django hex ascii http http-status-code-400

我正在使用django来构建一个简单的网站.当您键入基地址(现在是127.0.0.1:8000/)时,我使用django显示一个视图,该视图会执行一些检查并根据您的用户权限重定向您.(如果你有管理员权限,你去/admin,如果你不去/home,如果你没有登录,你去/login.)

当我发出HTTP请求时,我会被重定向,但我也会在django日志中看到以下两个错误:

  1. 代码400,消息错误的请求语法 ('\x16\x03\x01\x00\x95\x01\x00\x00\x91\x03\x01N\xaa\x9c\x08\x96\x7f\x92\xe9Z\x925\xcaY4\xa6\xa5\xab\xf2\x16\xfaT\x89\xe7\x8a\xc3\x99J)6\xfb\xc44\x00\x00H\xc0')
  2. "??N????Z?5?Y4?????T??ÙJ)6??4H?" 400 -

我将第一个中的十六进制翻译为(为了易读性添加了空格): SYN ETX NUL NUL U SOH NUL NUL Q ETX NUL N 170 156 X r 246 STX 141 214 ? 143 EOT FS j 142 223 s 241 220 < 185 \ \ m 242 &

我当然可以看到为什么服务器不喜欢这个请求,但我不知道它来自哪里.

有任何想法吗?

非常感谢.

==============

以下是视图的代码:

def index(request):
    user = request.user
    admin_courses = []

    if (user.is_authenticated()):
        u_id = user.getUserId()
        my_enrollment = Enrollment.objects.filter(user_id=u_id)
        admin_enrollment = my_enrollment.filter(type="ADMIN")
        for enr in admin_enrollment:
            course = Course.objects.get(id=enr.getCourseId())
            admin_courses.append(course)
        if (len(admin_courses)>0):
            return HttpResponseRedirect('/admin')
        else:
            return HttpResponseRedirect('/home')
    return HttpResponseRedirect('/login')
Run Code Online (Sandbox Code Playgroud)

小智 96

为了解决您的实际问题,如果您尝试通过https访问django服务器,则会发生这种情况.切换回http,该错误将消失.


Mne*_*quo 5

运行时出现这种错误:

manage.py runserver ...
Run Code Online (Sandbox Code Playgroud)

代替:

manage.py runfcgi ...
Run Code Online (Sandbox Code Playgroud)

因为我落后于Nginx。

使用runserver时,它正在侦听标准的http Web请求。当您使用runfcgi时,它将使用fastcgi协议而不是纯http来侦听其他类型的请求。

  • `python3 manage.py runfcgi 0.0.0.0:8001 未知命令:'runfcgi' 输入'manage.py help' 了解用法。` (2认同)