Pages : 1
#1 Le 08/04/2020, à 07: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, à 10:33)
Hors ligne
#2 Le 08/04/2020, à 09: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
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).
#3 Le 08/04/2020, à 10:37
- xdoomer01
Re : Problème compression à l'envoi, mod_deflate et php-fpm
Bonjour bruno,
Message modifié
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, à 10:57)
Hors ligne
#4 Le 08/04/2020, à 11: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).
#5 Le 09/04/2020, à 07: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, à 08: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 ?
#7 Le 09/04/2020, à 10: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, à 10:34
- bruno
Re : Problème compression à l'envoi, mod_deflate et php-fpm
Tu as essayé d'augmenter la valeur de deflatebuffersize ?
#9 Le 09/04/2020, à 10: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, à 11: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.
#11 Le 09/04/2020, à 11: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, à 11:12)
Hors ligne