Estoy recibiendo peticiones HEAD en mi solicitud, y se preguntaba sobre la mejor manera de manejarlos. Las opciones son:Las mejores prácticas para el manejo de petición HTTP HEAD con Django en App Engine
- convertirlos en Obtiene, proceso GET normalmente, entonces:.
- pele el cuerpo (aunque no estoy seguro de cómo -
response.content = ''
no parece hacerlo - se parece auto-Strips motor de aplicación el cuerpo, dando una advertencia "Dejar caer cuerpo inesperado en respuesta a la petición HEAD"
- pele el cuerpo (aunque no estoy seguro de cómo -
parece que esta es limpio, y se puede escribir muy bien con nosotros decoradores o middleware.
- manejar cada petición HEAD especialmente:
- esto significa que podía evitar un almacén de datos de acceso en algunos (muchos?) De los casos.
- Existe el riesgo, al parecer, que el middleware que establece se evitará la cabecera Content-longitud de hacerlo por este enfoque.
Algo más? ¿Qué debería hacer? ¿El uso de App Engine hace una diferencia aquí? ¿Hay detalles sutiles? si es así, ¿hay middleware apropiado para usar? Para convertir a GET, se `request.method = "GET" suficiente (que parece que funciona)?
* Django automáticamente quitará el contenido de las respuestas a las solicitudes HEAD sin dejar los encabezados, para que pueda manejar las solicitudes HEAD exactamente como las solicitudes GET en sus vistas. * A partir de la revisión [16115] (http: //code.djangoproject .com/conjunto de cambios/16115) Django contiene práctico [require_safe] decorador (http://docs.djangoproject.com/en/dev/topics/http/decorators/#django.views.decorators.http.require_safe), que restringe las solicitudes GET y HEAD. –
También tenga en cuenta, que petición HEAD está totalmente procesada por una función de vista (e incluso requet.GET se rellenará). La única diferencia parece ser en vacío 'response.content'. –