programing

Django : 400 잘못된 요청 구문-이 메시지는 무엇을 의미합니까?

minecode 2021. 1. 14. 08:09
반응형

Django : 400 잘못된 요청 구문-이 메시지는 무엇을 의미합니까?


저는 django를 사용하여 간단한 웹 사이트를 만들고 있습니다. 기본 주소 (현재는 127.0.0.1:8000/) 를 입력하면 django를 사용하여 사용자 권한에 따라 몇 가지 검사를 수행하고 리디렉션하는 뷰를 표시합니다. (관리자 권한이 있으면로 이동하고 /admin, 그렇지 않으면로 이동하고 /home, 로그인하지 않은 경우로 이동합니다 /login.)

나는 그 HTTP 요청을 할 때, 나는 리디렉션 내가해야로서 하지만 나는 또한 내 장고 로그에 다음과 같은 두 가지 오류를 참조하십시오

  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 -

첫 번째 16 진수를 다음과 같이 번역했습니다 (가독성을 위해 공백 추가). 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')

실제 질문을 해결하기 위해 https를 통해 django 서버에 액세스하려고 할 때 발생합니다. http로 다시 전환하면 해당 오류가 사라집니다.


실행할 때 이런 종류의 오류가 발생합니다.

manage.py runserver ...

대신에:

manage.py runfcgi ...

내가 Nginx 뒤에 있기 때문입니다.

runserver를 사용하면 표준 http 웹 요청을 수신합니다. runfcgi를 사용하면 일반 http 대신 fastcgi 프로토콜을 사용하여 다른 유형의 요청을 수신합니다.


이 유지 관리 미들웨어를 리팩터링하여 결과를 얻을 수 있습니다. 콘텐츠 요청을 처리하기 전에 사용자 상태를 확인하기 때문입니다.

import settings
from django.http import HttpResponseRedirect


class MaintenanceModeMiddleware(object):
    """
    Maintenance mode for django

    If an anonymous user requests a page, he/she is redirected to the
    maintenance page.
    """
    def process_request(self, request):

        is_login = request.path in (
            settings.LOGIN_REDIRECT_URL,
            settings.LOGIN_URL,
            settings.LOGOUT_URL,
            settings.MAINTENANCE_PATH,
        )
        if (not is_login) and settings.MAINTENANCE and (not request.user.is_authenticated()):
            return HttpResponseRedirect(settings.MAINTENANCE_PATH)
        return None

참조 URL : https://stackoverflow.com/questions/7929460/django-400-bad-request-syntax-what-does-this-message-mean

반응형