Un embed, e la regola sui frame che l’app non aveva mai avuto
/embed è il convertitore senza alcuna interfaccia di contorno, per una pagina che vuole ospitarlo, e comunica con chi lo ospita tramite postMessage. Aggiungerlo ha significato scrivere la regola che mancava: ogni altra rotta ora si rifiuta del tutto di essere incorniciata in un frame, cosa che prima non diceva nessuno.
Una zona di rilascio, il documento prodotto, un pulsante per copiare e uno per scaricare. Questo è tutto ciò che sta sotto /embed: nessuna intestazione, nessun piè di pagina, nessun blog, nessun account, nessuna cronologia — nulla che assomigli alla nostra navigazione spuntata dentro la pagina di qualcun altro.
Cosa controlla chi ospita
?conversion= decide con quale conversione si apre il frame, e ?theme=dark oppure ?theme=light decide il suo aspetto. È chi ospita a scegliere il tema, non il sistema operativo di chi visita, perché un widget che segue il sistema finisce per metà del pubblico come un rettangolo scuro dentro una pagina chiara.
I risultati tornano tramite postMessage alla finestra madre, e ogni messaggio porta source: 'TransformPipe' — chi ascolta su window sente ogni frame che ha e i propri script, quindi senza un nome da controllare il primo gestore che qualcuno scrive scatta sul messaggio di un altro. Al caricamento viene inviato un messaggio, così chi ospita può attendere il frame invece di indovinare un tempo massimo. Verifica event.origin sul tuo lato.
Perché incorniciarlo invece di fare da proxy
La conversione avviene nel browser di chi visita, esattamente come qui. Il tuo lettore lascia cadere un file, e questo non raggiunge né il tuo server né il nostro. Chi vuole una conversione lato server deve chiamare l'API; quello che offre l'embed è l'unica cosa che un'API non può dare: che il file non lasci mai la macchina su cui si trova.
È anche anonimo di proposito. L'embed viene disegnato al posto dell'applicazione, non come l'applicazione con l'interfaccia nascosta, e si trova sopra la parte che chiede al server chi è connesso — così una pagina su qualsiasi dominio che lo incornici non provoca mai una richiesta con credenziali verso di noi. Non c'è nemmeno un avviso sui cookie: chiedere il consenso dentro la pagina di qualcun altro significa chiederlo per suo conto.
Tutto il resto ora si rifiuta di essere incorniciato
L'embed aveva bisogno di una regola frame-ancestors, e scriverla ha rivelato che nessuna rotta ne aveva mai avuta una. Ogni altro indirizzo ora dice no — frame-ancestors 'none' e X-Frame-Options: DENY — così il convertitore che ha un account dietro non può essere messo in un frame in alcun modo. /embed e le sue traduzioni (/de/embed e le altre) permettono qualsiasi antenato e portano noindex, perché un convertitore senza interfaccia non è una pagina su cui qualcuno dovrebbe arrivare da una ricerca.
Conservare un documento, condividerlo e la cronologia restano su transformpipe.com. L'embed non ha una sessione con cui raggiungerli, ed è una scelta di progetto, non un limite.
Da leggere: convertire Markdown in HTML con JavaScript, e se un convertitore online sia sicuro.