Je travaille sur une page qui accepte les téléchargements de fichiers. En théorie, je peux détecter quand le fichier qu'ils m'envoient est trop gros (en regardant le Content-Length de leur réponse), et refuser d'accepter le téléchargement, renvoyant un HTTP 413 "Request Entity Too Large" Erreur.Comment puis-je limiter la taille des requêtes HTTP POST dans mod_perl?
Cependant, il semble que le simple fait cela ne suffit pas - Firefox, à moins , gardera toujours l'envoi du reste du fichier (qui pourrait prendre beaucoup de temps ), avant qu'il ne montre ma page d'erreur.
Le HTTP spec dit que je: "PEUT fermer la connexion pour empêcher le client de continuer la demande." Cependant, faire un 'STDIN proche', 'shutdown STDIN, 0', ou une variante de cela ne semble pas faire l'astuce - Firefox continue d'envoyer le fichier.
Je soupçonne que, lorsque mon gestionnaire mod_perl ferme la connexion, il est simplement fermer la connexion entre lui-même et Apache; Apache maintient la connexion entre lui et le client vivant. Est-il possible de dire à Apache de fermer la connexion? Sinon, cela ressemble à un grand vecteur de DoS .
Toutes les suggestions seraient les bienvenues.
Vous pourriez également vouloir penser à la demande en cours de fragmentation, et ainsi vous ne connaîtrez pas la taille du corps de la demande jusqu'à ce que tous les morceaux soient arrivés ... –