Estoy trabajando en una aplicación web PHP que acepta grandes cargas de archivos POSTed de clientes específicos y me gustaría aceptar o rechazar estas cargas (basadas en varios encabezados y otros factores, no solo el tamaño) antes de la el archivo se carga utilizando HTTP/1.1 100 Continuar.Compatible con HTTP 100 Continuar con PHP
Algunos antecedentes rápida de HTTP/1.1 spec 8.2.3:
El propósito de la 100 (Continuación) estado (véase la sección 10.1.1) es permitir a un cliente que está enviando un mensaje de solicitud con un cuerpo de solicitud para determinar si el servidor de origen está dispuesto a aceptar la solicitud (en función de los encabezados de solicitud) antes de que el cliente envíe el cuerpo de la solicitud. En algunos casos, puede ser inapropiado o altamente ineficaz para el cliente enviar el cuerpo si el servidor rechazará el mensaje sin mirar el cuerpo.
El problema es que Apache ve el Expect: 100-continue desde el cliente, devuelve un 100 Continuar y acepta la carga de archivos de todo antes de PHP comienza a procesar ... Sin embargo necesito PHP para comenzar el proceso inmediatamente después de la Espera : 100-continuar. No estoy seguro de si esto es posible, así que tengo dos preguntas:
- ¿Es posible hacer que PHP comience a procesarse inmediatamente después de la Espera: 100-continuar?
- Si no, ¿cuál es una buena alternativa?
Actualmente estoy pensando en emular 100 y sigo especificando que el cliente primero envíe una solicitud HEAD con los mismos encabezados que el POST. La aplicación web puede devolver una respuesta para continuar con el POST o un código de error. ¡Otras sugerencias son bienvenidas!
Me doy cuenta de que esta es una pregunta muy antigua, pero ¿terminaste usando la solicitud HEAD seguida del POST? Si es así, ¿qué tan cómodo fue implementarlo? Actualmente me encuentro frustrado por la incapacidad de implementar correctamente la expectativa de 100-continuar en una pila de PHP/Apache. – Marvin
100 continuar es imposible de controlar correctamente en PHP (al menos lo fue, pasé a mejores idiomas). Si tiene control sobre el cliente, entonces sí, enviar una CABEZA (o cualquier otro tipo de solicitud) para realizar una verificación previa de la POST principal es el camino a seguir. Si no tiene control sobre el cliente, la única opción es configurar un proxy/middleware que pueda interceptar el 100 y responder adecuadamente. –
Tengo el control del cliente, por lo que es una buena alternativa.Actualmente estoy tratando de proporcionar un gancho en Apache para implementar comprobaciones previas al 100-continue en el encabezado. No estoy seguro de si te llevará a algún lugar útil. http://stackoverflow.com/questions/35456122/apache-modules-implementing-100-continue?lq=1 – Marvin