Nella mia applicazione Web, gli utenti possono inserire testo in un feed e il testo può includere URL. Il mio codice esegue la scansione degli URL e li sostituisce quali tag di ancoraggio puntati agli URL. Voglio cambiare questo in modo che il mio codice possa rilevare se l'URL punta o meno su un'immagine, e se lo fa, esegue il rendering di un tag immagine all'interno del tag di ancoraggio, invece del solo testo dell'URL.Come faccio a essere sicuro che un URL sia un'immagine utilizzando JavaScript + jQuery?
Posso eseguire questa operazione sul codice lato server inviando una richiesta rapida "HEAD" all'URL per vedere quale tipo di contenuto è presente nella risposta e funziona in modo affidabile. Tuttavia, non si adatta bene per ovvi motivi.
Cosa sarebbe meglio se potessi inserire questa logica nel browser del cliente. Vorrei utilizzare JavaScript + jQuery per inviare la richiesta "HEAD" all'URL specificato e leggere l'intestazione Content-Type dalla risposta.
So che le richieste tra domini sono un problema. Potrei in qualche modo usare JSONP? Che opzioni ho?
EDIT - SICUREZZA RISCHIO
ho avuto alcune buone risposte alla mia domanda, ma volevo far notare qualcosa in grandi lettere in grassetto. Come Adam ha sottolineato nei commenti, questo è un rischio per la sicurezza. Se puoi garantire che le URL delle immagini provengano tutte da domini attendibili, sei a posto con questa soluzione. Tuttavia, nel mio scenario, gli utenti possono inserire qualunque URL vogliano. Ciò significa che potrebbero creare il proprio sito che richiede l'autenticazione di base, e quindi quando jQuery viene eseguito per impostare l'attributo src sull'immagine creata, all'utente viene presentata una finestra di dialogo nome utente/password, che ovviamente è un rischio enorme.
Potete controllare l'estensione del file nell'URL è un'estensione di immagine? – Jivings
Direi che la SICUREZZA è un problema. Accettare stringhe e scriverle nella pagina come questa per i link è una prospettiva spaventosa. Anche se stai disinfettando i tuoi input, un URL canaglia come www.viruses.com/getone.jpg potrebbe ancora essere perfettamente "legittimo" e dannoso. Spero che tu abbia considerato questi (e molti altri) vettori di attacco.Le opzioni lato client non sono valide per la convalida di un collegamento appropriato oltre la semplice analisi delle stringhe (cercando ".jpg" o qualcosa, ad esempio). –