2014-04-17 4 views
10

Ho un'applicazione angularjs in cui gli utenti immettono dati che vengono salvati nel database, quindi sul lato server è compilato in file pdf. Tutti gli accessi richiedono intestazioni di autenticazione appropriate. Dopo aver riempito i dati necessari, un utente preme il pulsante per salvare i dati e quindi per recuperare il file pdf. In modo ottimale, chiamo $window.open(url_generating_pdf nella mia app angularjs. Funziona bene e si apre in un'altra finestra, ma come aggiungere l'intestazione di autenticazione a questa richiesta $window? Nella mia comprensione non posso scaricare pdf e stamparlo con ajax, quindi mi manca questa autenticazione. O ci sarebbero altri modi per chiamare l'url dal server e rendere il file aperto in un'altra finestra?

risposta

6

penso che è possibile aggiungere questi parametri di autenticazione in URL e fare un ottenere nel vostro lato server

//Add authentication headers as params 
var params = { 
    access_token: 'An access_token', 
    other_header: 'other_header' 
}; 

//Add authentication headers in URL 
var url = [url_generating_pdf, $.param(params)].join('?'); 

//Open window 
window.open(url); 
+2

Alla fine, sono andato in giro il problema. Ho reso $ http.get standard per il pdf. Ritorno all'URL di breve durata per ottenere la chiamata che consente il download non autenticato con window.open in una nuova finestra. La tua soluzione sarebbe stata lavorabile pure – user2576168

+4

@hmartos L'invio del tuo token nell'URL lo espone a essere usato da chiunque intercetta i tuoi pacchetti inviati al server. L'URL non è mai crittografato e quindi può essere visto da chiunque. Fai attenzione a non esporre il tuo token. Nelle parole di Gandalf: "Resta segreto, tienilo al sicuro". – JFarr

+1

Grazie per il consiglio @JFarr, qualche idea su come passare il token ad API mantenendo il segreto? – hmartos