update restframework error api_view django http hex ascii http-status-code-400

restframework - return response django rest



Django: 400 mala sintaxis de solicitud: ¿qué significa este mensaje? (3)

Podría refactorizar este middleware de mantenimiento para lograr el resultado, ya que verifica el estado del usuario ANTES de procesar las solicitudes de contenido, lo que parece más djangonostic.

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

Estoy usando django para construir un sitio web simple. Cuando escribe la dirección base (que por ahora es 127.0.0.1:8000/), uso django para mostrar una vista que hace algunas comprobaciones y lo redirige en función de sus privilegios de usuario. (Si tiene privilegios de administrador, vaya a ''/ admin'', si no va a ''/ home'', y si no está conectado, vaya a ''/ login'').

Cuando realizo esa solicitud HTTP, me redireccionan como debería pero también veo los siguientes dos errores en mi registro django:

  1. código 400, mensaje Sintaxis de solicitud incorrecta (''/ 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 -

Traduje el hex en el primero en ser (espacios agregados para la legibilidad): 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 &

Ciertamente puedo ver por qué al servidor no le gustaría eso como una solicitud, pero no tengo idea de dónde viene.

¿Algunas ideas?

Muchas gracias.

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

Aquí está el código para la vista:

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'')


Para abordar su pregunta real, esto ocurre si está tratando de acceder al servidor django a través de https. Vuelve a http y ese error desaparecerá.


Recibo este tipo de error cuando corro:

manage.py runserver ...

en lugar de:

manage.py runfcgi ...

porque estoy detrás de Nginx

Cuando utiliza runserver, está escuchando solicitudes web http estándar. Cuando utiliza runfcgi, está escuchando un tipo diferente de solicitud, utilizando el protocolo fastcgi en lugar de http simple.