Maison >développement back-end >Golang >Comment puis-je limiter efficacement la taille des requêtes POST sur le serveur HTTP de Go ?
Prendre en compte les limitations de taille du corps dans les requêtes HTTP Golang
La gestion de la taille des requêtes de formulaire POST est cruciale pour éviter l'épuisement des ressources sur les serveurs. Par défaut, Golang limite ces requêtes à 10 Mo. Cependant, s'il est nécessaire de restreindre davantage cette limite, il est essentiel de l'aborder avec prudence.
Une approche viable consiste à utiliser la méthode r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize) dans la fonction ServeHTTP. Cela définit une limite maximale d'octets pour le corps de la requête, après quoi le serveur arrête la lecture et ferme la connexion. L'appel r.ParseForm() suivant est exécuté avec succès.
Cependant, renvoyer une erreur après avoir rencontré cette limite peut ne pas fermer la connexion en raison de la façon dont Go gère les requêtes HTTP. Pour vous assurer que la connexion est correctement fermée, vous pouvez définir le code d'état d'erreur et répondre en conséquence à l'aide de http.Error(w, "", http.StatusRequestEntityTooLarge).
Vous pouvez également envelopper le gestionnaire racine avec un MaxBytesHandler qui définit la limite avant de déléguer au gestionnaire racine. Cela permet d'appliquer la limite globalement à tous les gestionnaires.
Pour maximiser la sécurité, il est recommandé de définir des paramètres de serveur supplémentaires tels que ReadTimeout, WriteTimeout et MaxHeaderBytes pour gérer efficacement les clients malveillants.
N'oubliez pas que le but de ces mesures est d'éviter une consommation excessive de ressources par des clients malveillants ou mal conçus tout en garantissant la stabilité et les performances de votre serveur. En mettant en œuvre ces techniques, vous pouvez gérer efficacement la taille des requêtes de formulaire HTTP dans Golang.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!