Partage
  • Partager sur Facebook
  • Partager sur Twitter

Error HTTP curl lors d’exportation

HTTP 406 lors de transfert de fichier en multipart/form-data avec curl

Sujet résolu
    7 novembre 2022 à 18:51:56

    Bonjour à tous

    je possède un serveur local ( sous appache ) auquel j’ai réalisé un transfert de fichier comme suit :

    UPLOAD="tmp.txt" && [[ -f "$UPLOAD" ]] && { curl -i -X POST 'http://localhost/uploader.php'  -F 'deposit=test.txt' -F file=@"$UPLOAD" --compressed -A "Chrome/107.0.0.0" || : ; } || echo 'no file'

    à cette requete, le serveur me renvoie un status HTTP 200 ; jusque là tout va bien !

    Pourtant, lorsque je réalise la même manipulation mais cette fois-ci à destination de mon serveur distant ( hébergé chez o2switch ) :

    UPLOAD="tmp.txt" && [[ -f "$UPLOAD" ]] && { curl -i -X POST 'https://www.mon-serveur-distant.com/uploader.php'  -F 'deposit=test.txt' -F file=@"$UPLOAD" --compressed -A "Chrome/107.0.0.0" || : ; } || echo 'no file'

    le serveur me renvoie une error HTTP 406 ( problème de formulation/comprehension de requete semble-t-il )

    Le plus étrange ici est que dès que je retire le fichier join de la requete :

    curl -i -X POST 'https://www.mon-serveur-distant.com/uploader.php' -F 'deposit=test.txt' --compressed -A "Chrome/107.0.0.0"

    le status de la reponse redevient HTTP 200

    J’aimerai donc comprendre la raison derriere cette erreur 406

    Je m’en remet donc à vous pour m’aider à résoudre mon problème car mes mainte recherches internet ont  été sans succès ( mon problème doit être trop spécifique )

    Merci pour votre temps

    UPDATE :

    il semblerait que lorsque je suis connecté au wifi cette erreur HTTP 406 devient HTTP 307 ( redirection temporaire vers ? ) ; j’était connecté à mon téléphone en partage de connection avant ce test ; Se pourrait-ce être un probleme de routage ??



    -
    Edité par LudovicGalindo 7 novembre 2022 à 18:59:44

    • Partager sur Facebook
    • Partager sur Twitter
      7 novembre 2022 à 20:52:57

      salut,

      un problème de chemin vers tmp.txt : en local, il n'a peut-être pas besoin d'être indiqué.
      406/307 : les problèmes différent et ne sont peut-être pas liés

      mais, ce n'est pas ma partie.

      par contre pour ta ligne de commande, elle devrait être rédigée ainsi :

      upload='/chemin/absolu/tmp.txt'; if test -f "$upload"; then curl -i -X POST 'http://localhost/uploader.php' -F 'deposit=test.txt' -F file=@"$upload" --compressed -A "Chrome/107.0.0.0"; else echo 'no file'; fi

      en remplaçant /chemin/absolu par le chemin absolu vers le fichier tmp.txt.

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        7 novembre 2022 à 21:09:35

        Salut, merci pour ta réponse, j’en prends note.

        Je suis également de ton avis  « 406/307 : les problèmes différent et ne sont peut-être pas liés »

        Pour cause : j’ai identifié la cause de l’erreur 307 : mon routeur semble refuser mon parametre :

        -A "Chrome/107.0.0.0"

        je n’en connais pas la raison mais le fait est qu’en s’en passant je passe de l’erreur 307 à 406 - ce qui reste une amélioration....

        Je réédite :

        Je ne pense pas finalement que le problème 307 provienne de mon routeur... ( c’était quelque peut tiré par les cheveux ), en effet

        j’ai lancé la requete suivante qui à aboutit :

        UPLOAD='/mon/chemin/vers/mon-fichier.zip'
        TRACE="trace.txt"
        SERVEUR="https://mon-serveur-local" 
        clear 
        curl --trace-ascii $TRACE $SERVEUR -H \
        	'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
        	-H "Content-Type: application/x-www-form-urlencoded" \
        	--data-urlencode 'data=test' \
        	 -H "referer: $SERVEUR" -H "origin: ` echo $SERVEUR | grep -oP "^https?\:\/\/[^\/]+" `" \
        	 -H "cache-control: max-age=0" -H "accept-language: en-US,en;q=0.9" \
        	 -H 'sec-ch-ua: "Chromium";v="107", "Not=A?Brand";v="24"' -H 'sec-ch-ua-mobile: ?0' \
        	 -H 'sec-ch-ua-platform: "Linux"' -H 'sec-fetch-dest: document' \
        	 -H 'sec-fetch-mode: navigate' -H 'sec-fetch-site: same-origin' \
        	 -H 'sec-fetch-user: ?1' -H 'upgrade-insecure-requests: 1' \
        	 -H 'cookie: o2s-chl=iuggxunygibuyfv6dtyducvtrdvy5dtbythvdbhtduybibyfbtrd' \
        	 -A 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36' --compressed 
        echo

        Pour donner quelque explication, j’ai recopié le header envoyer par chrome pour mieux me faire passé pour lui...

        Tout cela pour dire que j’ai découvert que chrome était également dans l’incapacité de transférer des documents...

        .

        .

        .

        .

        Après avoir contacté l’assitance d’o2switch, j’ai décourvert que désactiver un mode appelé ModSecurity resolvé mon problème

        Je marque donc le sujet comm résolu !

        -
        Edité par LudovicGalindo 8 novembre 2022 à 16:18:26

        • Partager sur Facebook
        • Partager sur Twitter

        Error HTTP curl lors d’exportation

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown