Constructeur d'en-tête HTTP Content-Disposition | filename et filename* d'un coup
Composez un en-tête Content-Disposition conforme à RFC 6266 et RFC 5987. L'outil associe le filename ASCII au filename* de RFC 5987 dans une seule sortie et signale les caractères non ASCII ou les guillemets que les générateurs rapides oublient souvent. Conçu pour les développeurs back-end qui écrivent des points d'accès de téléchargement.
💡 À propos de cet outil
Si vous placez un nom avec des accents directement dans filename="résumé.pdf", certains clients affichent un nom illisible dans la boîte d'enregistrement. Le paramètre filename n'a été prévu que pour l'ASCII ; la solution consiste à envoyer aussi filename* en UTF-8 percent-encodé selon RFC 5987. Quand les deux sont présents, les clients qui comprennent filename* le préfèrent et ignorent filename, conservé comme repli pour les anciens clients.
Cet outil écrit les deux à la fois. Vous saisissez le nom ASCII de repli et le nom UTF-8, et il produit par exemple filename="resume.pdf"; filename*=UTF-8''r%C3%A9sum%C3%A9.pdf sans que vous encodiez chaque octet. Il gère aussi les paramètres facultatifs size, creation-date et modification-date, et formate les dates en HTTP-date (IMF-fixdate) pour un en-tête valide.
🧐 Questions fréquentes
Comment fonctionne l'encodage de filename* ?
La valeur suit la forme charset'langue'valeur. On utilise UTF-8 comme charset, la langue reste vide, et le nom est converti en octets UTF-8 ; chaque octet non sûr s'écrit %XX en hexadécimal. Ainsi un é devient %C3%A9.
Dois-je fournir filename et filename* tous les deux ?
Pour une compatibilité maximale, oui. Les clients modernes lisent filename* et ignorent filename ; les anciens reviennent à filename. Envoyer les deux évite de traiter chaque navigateur au cas par cas.
Que mettre dans le champ ASCII ?
Un nom composé uniquement de caractères ASCII, par exemple resume.pdf. Si vous collez du texte accentué, l'outil vous avertit et il vaut mieux déplacer ce nom vers le champ UTF-8.
Quelle est la différence entre attachment et inline ?
attachment déclenche la boîte Enregistrer sous ; inline demande au navigateur d'afficher le contenu sur place. Utilisez inline pour un PDF à montrer à l'écran et attachment pour forcer le téléchargement.
La taille et les dates sont-elles obligatoires ?
Non. Laissées vides, elles sont omises de l'en-tête. Le champ size n'accepte qu'un entier positif ou nul.
📚 Pourquoi deux paramètres de nom
La séparation entre filename et filename* est une affaire de compatibilité ascendante. La spécification d'origine de Content-Disposition n'autorisait que l'ASCII dans le jeton filename, sans moyen portable d'envoyer Müller.pdf ou un nom accentué. RFC 5987 a introduit la forme charset'langue'valeur, et RFC 6266 l'a intégrée à Content-Disposition sous le nom filename*.
Le percent-encoding est le même mécanisme que celui des URL : les octets susceptibles de perturber le destinataire sont remplacés par %XX. La balise de langue entre les deux apostrophes reste presque toujours vide, car un nom de fichier ne dépend pas d'une langue parlée. Choisir UTF-8 plutôt que ISO-8859-1 compte aussi, car certaines implémentations ne décodent que la forme UTF-8.