Un embed, et la règle de frame que l’application n’avait jamais eue
/embed est le convertisseur sans aucun décor, pour une page qui veut l’héberger, et il dialogue avec elle par postMessage. L’ajouter a obligé à écrire la règle qui manquait : toute autre route refuse désormais d’être mise dans un cadre, ce que rien ne disait auparavant.
Une zone de dépôt, le document produit, un bouton pour copier et un pour télécharger. C’est tout ce que contient /embed : pas d’en-tête, pas de pied de page, pas de blog, pas de compte, pas d’historique — rien qui ressemblerait à notre propre navigation apparaissant dans la page de quelqu’un d’autre.
Ce que l’hôte contrôle
?conversion= décide quelle conversion le cadre ouvre, et ?theme=dark ou ?theme=light décide de son apparence. C’est l’hôte qui choisit le thème plutôt que le système d’exploitation du visiteur, car un composant qui suit le système atterrit en rectangle sombre sur une page claire pour la moitié du public.
Les résultats reviennent par postMessage vers la fenêtre parente, et chaque message porte source: 'TransformPipe' — un hôte qui écoute sur window entend chaque cadre qu’il contient et ses propres scripts, donc sans un nom à vérifier, le premier gestionnaire que quelqu’un écrit se déclenche sur le message d’un autre. Un message est envoyé au chargement, pour qu’un hôte puisse attendre le cadre plutôt que de deviner un délai. Vérifiez event.origin de votre côté.
Pourquoi l’intégrer plutôt que le relayer
La conversion tourne dans le navigateur du visiteur, exactement comme ici. Votre lecteur dépose un fichier, et celui-ci n’atteint ni votre serveur ni le nôtre. Un hôte qui veut une conversion côté serveur doit appeler l’API ; ce que l’embed offre est la seule chose qu’une API ne peut pas faire, à savoir que le fichier ne quitte jamais la machine où il se trouve.
Il est aussi anonyme, délibérément. L’embed est dessiné à la place de l’application plutôt que comme l’application avec son décor caché, et il se situe au-dessus de la partie qui demande au serveur qui est connecté — une page sur n’importe quel domaine qui l’intègre ne provoque donc jamais de requête authentifiée vers nous. Il n’y a pas non plus de bandeau de cookies : demander un consentement dans la page de quelqu’un d’autre revient à demander en son nom.
Tout le reste refuse désormais d’être mis dans un cadre
L’embed avait besoin d’une règle frame-ancestors, et l’écrire a révélé qu’aucune route n’en avait jamais eu. Toute autre adresse dit désormais non — frame-ancestors 'none' et X-Frame-Options: DENY —, si bien que le convertisseur qui a un compte derrière lui ne peut plus du tout être placé dans un cadre. /embed et ses traductions (/de/embed et les autres) autorisent n’importe quel ancêtre et portent noindex, car un convertisseur sans décor n’est pas une page où l’on devrait arriver depuis une recherche.
Conserver un document, le partager et l’historique restent sur transformpipe.com. L’embed n’a pas de session pour les atteindre, et c’est voulu, pas une limitation.
Autres lectures : convertir du Markdown en HTML en JavaScript, et si un convertisseur en ligne est sûr.