Node12 refuse les post de plus de cent vingt mille OCTETs
... / Node12 refuse les post de...
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Question

Node12 refuse les post de plus de cent vingt mille OCTETs

by
Community Deleted user
Created on 2020-08-20 12:29:42 (edited on 2024-09-04 11:27:44) in Hébergement Cloud Web

J'ai un site qui tourne correctement sous node : alyasmina.ovh
sauf que cela fait 5 jours que j'essaye de faire des POST sur ce ce site. J'ai d'abord cru que j'échouais pour des salades de protocole de sécurité. En fait j'échoue car l'implémentation de Node12 refuse les POST de plus de 120kO (je dis bien cent vingt mille OCTETS ).
J'ai écrit un programme de test qui montre bien ça, alyasmina.ovh/testLoadSize dont le code est ci-dessous. Essayez par vous même sur mon site ou en intégrant mon code sur le vôtre. Vous verrez que pour 100000 octets le téléchargement est ok et que pour 150000 vous aurez une réponse "Bad Request, Your browser sent a request that this server could not understand." ou alors une "Error 403".

Dans le paramétrage des POST il y a plusieurs limites :
- le nombre de champs
- la taille maximale des champs
- la taille maximale du POST avec les fichiers
- ...
Dans mon cas, node plante sur le serveur pour un textarea de plus de 120kO alors qu'en local et dans la doc de "formidable" la valeur par défaut est de 20MO.
***
PS Je ne crois pas qu'on puisse incriminer "formidable" car avant d'en venir à utiliser ce module je faisais du POST pur et dur en nodejs et j'avais déjà le même problème.

La solution est-elle du côté de OVH ou

/***************************/
case "/testLoadSize":

var xx = "\n";
xx += "\n";
xx += "\n";
xx += " \n";
xx += " testLoadSize\n";
xx += " \n";
xx += " \n";
xx += " \n";
xx += "\n";
xx += "\n";
xx += "

Choisir la taille de l'envoi en octets :
\n";
xx += "
\n";
xx += "

\n";
xx += "

POSTer</
\n";
xx += "

\n";
xx += "
\n";
xx += "\n";
xx += "
\n";
xx += "

 
Réponse du serveur :</>
@0

";
xx += "";
var myFeedBack = "---";

//remplacer ci-dessous request par le 1er argument de la callback de createServer (req ?)
var myMethod = request.method;
myMethod = myMethod.toLowerCase();
console.log("myMethod='" + myMethod + "'");

if (myMethod == "post") {
var myForm = formidable({multiples: true});
myForm.parse(request, (xError, xFields, xFiles) => {
if (xError) {
console.log("xError='" + xError + "'");
myFeedBack = xError;
} else {
console.log("xFields.testLoad.length='" + xFields.testLoad.length + "'");
myFeedBack = "loadSize= xFields.testLoad.length= " + xFields.testLoad.length + " octets";
}
var myHTML = xx.replace(/@0/, myFeedBack);
response.writeHead(200, {'Content-Type': 'text/html'});
response.end(myHTML);
});
} else {
var myHTML = xx.replace(/@0/, myFeedBack);
response.writeHead(200, {'Content-Type': 'text/html'});
response.end(myHTML);
}

break;
/****************/


1 Reply ( Latest reply on 2020-08-20 19:28:57 by
Community Deleted user
)

Crée un fichier pho qui contient l'instruction phpinfo();
et tu verras quelles sont les limites de ton hébergement

Sur Apache+php ce serait effectivement la bonne solution, mais je suis en Node+javascript et ces outils d'administration ne sont pas à disposition des utilisateurs :-((

Replies are currently disabled for this question.