Hice un controlador personalizado404 para un sitio web autenticado de Django para evitar la fuga de información.Django custom handler404 muestra 404 pero da encabezado 200
def check_logged_in_404(request):
""" Custom 404. Show friendly 404 when logged in and redirect to /login
when not logged in.
"""
if request.user.is_authenticated():
return render_to_response('404.html')
else:
return HttpResponseRedirect('/login')
Funcionalmente hace exactamente lo que yo quiero. Sin embargo, la página de retorno 404 tiene un estado 200, que es el código correcto. Pero esto obviamente tiene que ser un estado de devolución 404.
Un raise404 no funciona porque, si no termina en una recursión infinita, vuelve aquí y, por lo tanto, da como resultado el mismo problema.
Probé HttpResponseNotFound, pero esto solo toma una cadena como argumento y no una plantilla, que no es DRY-ish.
Y he intentado manualmente para establecer la cabecera con:
response = render_to_response('404.html')
response['Status'] = "Not Found - 404"
return response
A continuación, el encabezado de estado se establece de hecho pero el navegador sigue mostrando un 200.
estoy fuera de opciones .. Cualquier persona que tiene consejos, por favor ser mi héroe ... :)
Gracias y saludos,
Gerard.
Editar: He probado el valor de campo de estado en todo tipo por cierto, pero no hubo suerte :(
no se puede creer lo difícil que me mordió – dirk