Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/04/2020, à 08:42

xdoomer01

Problème compression à l'envoi, mod_deflate et php-fpm

Bonjour,

J'ai un problème étrange qui se produit lors de l'activation de la compression à l'envoi.

J'ai activer la compression à l'envoi dans mod_deflate d'apache dans le fichier /etc/apache2/mods-enabled/deflate.conf
en ajoutant la directive SetInputFilter DEFLATE.

Ce qui permet d'envoyer des requête HTTP dont le corps est compressé au serveur, et c'est le serveur qui s'occupe de la décompression automatiquement si dans l'entête HTTP et présent content-encoding : gzip

Ma requête HTTP est la suivante :

Entête envoyer en clair :

ContentType : "multipart/form-data; boundary=--c45c2453c1f4423dbfd4059e7dad8fbf"
Accept : "application/json"
accept-encoding="gzip" // Pour signaler que je veux la réponse au format compressé
"content-encoding"="gzip"  // Pour signaler que la requête http est compressé à l'envoi

Corps envoyé compressé au serveur:

<RC>--c45c2453c1f4423dbfd4059e7dad8fbf<RC>Content-disposition: form-data;name=param1<RC><RC>val1
<RC>--c45c2453c1f4423dbfd4059e7dad8fbf<RC>Content-disposition: form-data;name=param2<RC><RC>val2
<RC>--c45c2453c1f4423dbfd4059e7dad8fbf<RC>Content-disposition: form-data;name=param3<RC><RC>val3
<RC>--c45c2453c1f4423dbfd4059e7dad8fbf--<RC>

Je dois donc récupérer trois variables post coté php : param1:val1, param2:val2,param3:val3.

Coté serveur j'ai un simple script php qui fait un var_dump($_POST).

Le problème c'est que l'envoi de la requête compressé, s'effectue bien, mais je n'ai que la première variable post dans le résultat c'est à dire param1:val1 !

Ou sont les 2 autres variables ???

J'ai donc effectué plusieurs tests dans des VM :
- Test avec ubuntu server 19.10, avec apache 2.4.41, php-fpm 7.3 : problème -> param1:val1
- Test avec ubuntu server 19.10, avec apache 2.4.41, mod_php 7.3 : cela fonctionne -> param1:val1, param2:val2,param3:val3

- Test avec debian 10.3, avec apache 2.4.38, php-fpm 7.3 : problème -> param1:val1
- Test avec debian 10.3, avec apache 2.4.38, mod_php 7.3 : cela fonctionne -> param1:val1, param2:val2,param3:val3

Pourquoi en php-fpm je n'ai qu'une seule variable POST ???

Est ce un bug ???

Merci pour votre aide !

Dernière modification par xdoomer01 (Le 08/04/2020, à 11:33)

Hors ligne

#2 Le 08/04/2020, à 10:08

bruno

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Bonjour,

Merci d'utiliser les balises [ code ] dans ton premier message comme indiqué dans ce fil. ce sera plus lisible wink

Est-ce que tu peux essayer en passant cet en-tête HTTP dans ta requête :

Transfer-Encoding: gzip

Je soupçonne un problème avec l'en-tête content-length et le proxy_fcgi (il faudrait voir la configuration apache/ php-fpm).

Hors ligne

#3 Le 08/04/2020, à 11:37

xdoomer01

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Bonjour bruno,

Message modifié wink

Merci pour ta réponse.

J'ai soupçonné également un problème avec content-length comme indiqué dans la doc (https://httpd.apache.org/docs/2.4/mod/mod_deflate.html), je l'ai aussi ajouter dans l'entête, mais même problème.

En ajoutant le transfer-encoding j'obtient une erreur 400, bad request, en clair requête http invalide...

La configuration du apache/php-fpm est proche de celle par défaut, au vu de mes tests dans les 2 VMs.

Je sèche un peu...

Quels fichiers de configurations veux tu voir ?

Dernière modification par xdoomer01 (Le 08/04/2020, à 11:57)

Hors ligne

#4 Le 08/04/2020, à 12:00

bruno

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Oui, ma réponse se basait sur la doc d'Apache.
Et non, justement il ne faut pas ajouter content-length.

Une autre piste, serait de désactiver output_buffering :

output_buffering = 0

dans php.ini (ou autre).

Hors ligne

#5 Le 09/04/2020, à 08:12

xdoomer01

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Même problème avec le output_buffering désactiver...

Hors ligne

#6 Le 09/04/2020, à 09:03

bruno

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Bon je persiste à penser qu'il s'agit d'un problème avec content-length et le fait que l'on utilise un proxy fcgi :

https://httpd.apache.org/docs/2.4/mod/m … buffersize

Mais c'est peut-être simplement un problème de code. Qu se passe-t-il si tu envoies un tableau (array) à la place des trois variables séparées ?

Hors ligne

#7 Le 09/04/2020, à 11:05

xdoomer01

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Je suis bien d'accord avec toi, c'est certainement un problème avec content-length, mais reste à trouver comment et où...

Le problème de code je ne pense pas, la trame est correct j'ai vérifier plusieurs fois, avec la RFC et dans divers langage, python et php.

Quand je passe un tableau, j'ai exactement le même problème, seul l'élément 0 est visible.

Hors ligne

#8 Le 09/04/2020, à 11:34

bruno

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Tu as essayé d'augmenter la valeur de deflatebuffersize ?

Hors ligne

#9 Le 09/04/2020, à 11:58

xdoomer01

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Oui je l'ai doublé et même problème.

J'ai même essayé SetEnv proxy-sendcl 1 dans la conf proxy, mais cela ne fonctionne pas non plus.

C'est vraiment un truc de dingue !

Hors ligne

#10 Le 09/04/2020, à 12:10

bruno

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Bon, je sèche. J'ai bien vu des signalement de bogue sur des choses un peu similaires mais c'est censé être résolu.

Hors ligne

#11 Le 09/04/2020, à 12:12

xdoomer01

Re : Problème compression à l'envoi, mod_deflate et php-fpm

Oui j'ai épuré tout ce que je pouvais sur le net.

Du coup je ne sais pas si c'est un bug, ou un prob de conf.

Une vrai galère, pis la doc c'est pas super explicite...

Dernière modification par xdoomer01 (Le 09/04/2020, à 12:12)

Hors ligne