Django : 400 잘못된 요청 구문-이 메시지는 무엇을 의미합니까?
저는 django를 사용하여 간단한 웹 사이트를 만들고 있습니다. 기본 주소 (현재는 127.0.0.1:8000/
) 를 입력하면 django를 사용하여 사용자 권한에 따라 몇 가지 검사를 수행하고 리디렉션하는 뷰를 표시합니다. (관리자 권한이 있으면로 이동하고 /admin
, 그렇지 않으면로 이동하고 /home
, 로그인하지 않은 경우로 이동합니다 /login
.)
나는 그 HTTP 요청을 할 때, 나는 리디렉션 내가해야로서 하지만 나는 또한 내 장고 로그에 다음과 같은 두 가지 오류를 참조하십시오
- 코드 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')
"??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
'programing' 카테고리의 다른 글
게임 개발을위한 D 프로그래밍 언어 (0) | 2021.01.14 |
---|---|
DBRef로 mongodb를 쿼리하는 방법 (0) | 2021.01.14 |
"1 개 선택"은 무엇을합니까? (0) | 2021.01.14 |
strdup 또는 _strdup? (0) | 2021.01.14 |
파이썬에서 한 줄씩 긴 여러 줄 문자열을 읽는 방법 (0) | 2021.01.14 |