Convertisseur cURL en Fetch (JS & Node)
Convertissez instantanément vos commandes cURL en syntaxe Fetch API. Analysez en-têtes HTTP, tokens d'authentification, cookies et payloads JSON en code JavaScript async/await moderne.
Convertissez instantanément vos commandes cURL en syntaxe Fetch API. Analysez en-têtes HTTP, tokens d'authentification, cookies et payloads JSON en code JavaScript async/await moderne.
Convertissez instantanément vos commandes cURL en syntaxe Fetch API. Analysez en-têtes HTTP, jetons d'authentification, cookies et corps JSON en code async/await moderne.
Invocation brute en ligne de commande commençant par 'curl'. Prend en charge les retours à la ligne avec antislash, l'échappement des guillemets simples et doubles, ainsi que les conventions de flags POSIX standard.
Définit le formatage du code généré : syntaxe moderne async/await pour navigateur ES2022, TypeScript fortement typé avec types génériques ApiResponse, syntaxe serveur Node.js 18+ avec AbortSignal, Next.js App Router avec tags de cache, ou syntaxe client Axios.
Verbe de la requête HTTP. Lorsque l'option -X est omise, cURL utilise par défaut GET, sauf en présence d'options transmettant un corps de requête (-d, --data, -F), qui basculent implicitement la méthode par défaut vers POST.
En-têtes de métadonnées personnalisées pour la requête. L'implémentation de fetch dans le navigateur applique des restrictions sur les en-têtes interdits (par exemple, Host, Content-Length ou Cookie ne peuvent pas être écrasés manuellement via l'API Headers pour des raisons d'isolation de sécurité).
Charge utile de données transférée dans les requêtes POST, PUT ou PATCH. Analysée dynamiquement sous forme de JSON.stringify() pour les chaînes JSON, URLSearchParams() pour application/x-www-form-urlencoded, ou FormData() pour les téléversements multipart.
Identifiants d'authentification. L'option cURL -u utilisateur:mot_de_passe est synthétisée en 'Authorization: Basic <base64>', tandis que -H 'Authorization: Bearer <token>' est extraite sous forme de variables structurées avec masquage optionnel des données sensibles.
Contrairement à la CLI cURL (qui affiche les codes d'erreur) ou à Axios (qui rejette la promesse en cas de réponse 4xx/5xx), l'API Fetch native de JavaScript ne rejette sa promesse qu'en cas de panne réseau avérée ou de blocage CORS. Un code 404 Not Found, 401 Unauthorized ou 500 Internal Server Error résout la promesse normalement. Vous devez impérativement tester 'if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);' avant d'appeler response.json() ou response.text().
Lors de la conversion d'une commande cURL d'envoi de fichier avec -F ('--form') vers Fetch, ne définissez JAMAIS manuellement l'en-tête 'Content-Type: multipart/form-data'. Cette déclaration supprime le paramètre dynamique de délimiteur (ex. 'boundary=----WebKitFormBoundary...') généré automatiquement par le navigateur pour segmenter la charge utile. Transmettez simplement l'instance de FormData directement à l'option body, et le navigateur calculera automatiquement le Content-Type adéquat avec son délimiteur boundary.
Dans cURL, l'utilisation de -d sans en-tête Content-Type explicite prend par défaut la valeur 'application/x-www-form-urlencoded' et non JSON. Beaucoup de développeurs encapsulent par erreur -d 'cle=valeur&autre=donnee' dans un JSON.stringify(). Vérifiez systématiquement si vos données sont des paires clé-valeur (qui nécessitent 'new URLSearchParams({ cle: 'valeur', autre: 'donnee' })') ou du JSON valide (qui requiert 'JSON.stringify(data)' et un en-tête explicite 'Content-Type: application/json').
Dans un terminal, cURL peut forger n'importe quel en-tête HTTP, y compris 'Cookie', 'User-Agent', 'Referer' et 'Host'. Cependant, dans l'API Fetch JavaScript du navigateur, la spécification W3C Fetch classe ces en-têtes comme 'Forbidden Header Names' pour empêcher les failles CSRF et le vol de session. Le navigateur ignorera silencieusement tout en-tête 'Cookie' manuel ; utilisez plutôt 'credentials: "include"' (ou 'same-origin') afin que le gestionnaire de cookies du navigateur associe automatiquement vos jetons de session.
cURL est un utilitaire en ligne de commande non soumis à la stratégie de même origine (Same-Origin Policy). Lors de l'exécution de fetch() dans le code JavaScript côté client vers une API tierce ne renvoyant pas l'en-tête 'Access-Control-Allow-Origin: *', le navigateur bloque la réponse. Pour résoudre cela, effectuez l'appel d'API depuis un serveur back-end (Node.js, route Next.js Route Handler ou Cloudflare Worker) où CORS ne s'applique pas, ou configurez les en-têtes CORS appropriés sur le serveur de destination.
Cette erreur survient lors de l'appel de 'await response.json()' sur un point de terminaison d'API ayant renvoyé un corps vide (par exemple, HTTP 204 No Content), une page d'erreur HTML (ex. 502 Bad Gateway) ou du texte brut. Vérifiez systématiquement 'response.headers.get('content-type')?.includes('application/json')' avant d'appeler response.json(), ou inspectez 'const text = await response.text()' combiné à un bloc try/catch sécurisé autour de JSON.parse.
Cela se produit lorsque 'Content-Type: multipart/form-data' est explicitement renseigné dans les en-têtes de fetch. Lorsque vous utilisez FormData(), retirez complètement l'en-tête 'Content-Type' de l'objet headers. Le navigateur ou le runtime Node.js injectera automatiquement 'multipart/form-data; boundary=----WebKitFormBoundary...' avec la valeur exacte de délimitation calculée.
Lors de la copie de commandes cURL multilignes depuis des scripts bash ou de la documentation technique, la présence d'espaces après le caractère antislash ('\ ') amène bash et les analyseurs syntaxiques à interpréter le saut de ligne comme du texte littéral plutôt que comme une continuation d'arguments. Notre analyseur normalise automatiquement les séquences '\ ' et '\ ', en supprimant les espaces parasites et en fusionnant les fragments du terminal en une suite d'arguments unifiée.
Pour convertir une commande cURL en Fetch, extrayez l'URL cible de la ligne de commande, mappez -X vers la propriété 'method' de fetch (GET, POST, PUT, DELETE), convertissez chaque argument -H en paires clé-valeur dans l'objet 'headers', formatez les données -d ou --data en 'JSON.stringify(payload)' ou 'new URLSearchParams(payload)' dans la propriété 'body', puis encapsulez l'appel dans une fonction 'async/await' avec 'const response = await fetch(url, options)'.
cURL fonctionne comme un client HTTP brut sans le bac à sable de sécurité d'un navigateur, ignorant ainsi la politique de même origine (Same-Origin Policy) et les règles CORS (Cross-Origin Resource Sharing). Les navigateurs modernes appliquent ces restrictions pour empêcher les applications web non autorisées de lire des données sensibles inter-origines. Si le serveur cible ne renvoie pas d'en-tête 'Access-Control-Allow-Origin' correspondant à l'origine de votre application web, le navigateur bloque la requête fetch. Pour y remédier, faites transiter la requête par un proxy back-end ou une fonction API serverless.
Dans cURL, l'option '-u utilisateur:mot_de_passe' transmet une authentification HTTP Basic. Dans le code JavaScript Fetch moderne pour navigateur, encodez les identifiants en Base64 via 'btoa("utilisateur:mot_de_passe")' et transmettez-les sous la forme 'headers: { Authorization: `Basic ${btoa("utilisateur:mot_de_passe")}` }'. Dans Node.js, utilisez 'Buffer.from("utilisateur:mot_de_passe").toString("base64")' pour obtenir exactement le même en-tête standard.
Dans le JavaScript côté navigateur, l'en-tête 'Cookie' est un nom d'en-tête interdit (Forbidden Header Name) qui ne peut pas être défini manuellement dans fetch() pour des impératifs de sécurité. Pour envoyer les cookies stockés par le navigateur pour le domaine cible, définissez 'credentials: "include"' dans l'objet d'options de fetch. Dans un environnement serveur Node.js (où ces restrictions de navigateur ne s'appliquent pas), vous pouvez passer directement 'Cookie: session_id=xyz' dans l'objet headers.
Dans cURL, '-d' et '--data-raw' transmettent la chaîne brute fournie, avec un Content-Type par défaut à 'application/x-www-form-urlencoded' sauf substitution explicite via -H. Dans Fetch, s'il s'agit de données JSON, vous devez les sérialiser avec JSON.stringify() et spécifier 'Content-Type: application/json'. Si cURL utilise '--data-urlencode', les valeurs des paramètres sont encodées au format URL avant l'envoi, ce qui est géré nativement dans Fetch en passant les paires clé-valeur à 'new URLSearchParams({ cle: valeur }).toString()'.
Validez instantanément vos sitemaps XML et fichiers d'index. Vérifiez le seuil des 50 000 URLs, la syntaxe W3C Datetime, les balises hreflang, schémas médias et erreurs Google Search Console.
Prévisualisez vos extraits Google SERP sur ordinateur et mobile avec troncature précise au pixel près, badges rich snippets, sitelinks et score CTR en direct.
Générez des dégradés de maillage CSS multi-points, des arrière-plans animés et des maillages SVG. Ajustez les points de contrôle, le grain argentique et exportez le code CSS ou Tailwind.
Créez, validez et générez par lots vos liens de suivi de campagne Google Analytics GA4 avec notre générateur UTM gratuit. Nettoyez vos URL, extrayez les balises existantes et exportez des QR codes.
Formatez, embellissez, validez et réparez vos flux JSON en ligne instantanément. Corrigez les erreurs de syntaxe, clés sans guillemets, minifiez et inspectez l'AST sans aucun transfert serveur.
Encodez et décodez instantanément du texte ou des fichiers en Base64. Compatible base64url, UTF-8, retours MIME, Data URLs et correction d'erreurs en direct.