2014-04-17 17 views
10

Mam aplikację angularjs, w której użytkownicy wprowadzają dane zapisane w bazie danych, a następnie po stronie serwera są kompilowane do pliku pdf. Cały dostęp wymaga odpowiednich nagłówków uwierzytelniania. Po wypełnieniu potrzebnych danych użytkownik naciska przycisk, aby zapisać dane, a następnie pobrać plik pdf. Optymalnie nazywam się $window.open(url_generating_pdf) w mojej aplikacji angularjs. To działa dobrze i otwiera się w innym oknie, ale jak dodać nagłówek uwierzytelniania do tego żądania $window? W moim rozumieniu nie mogę pobrać pdf i wydrukować go przy pomocy ajax, więc brakuje mi tego uwierzytelnienia. A może istnieją inne sposoby na wywołanie adresu URL z serwera i sprawienie, że plik otworzy się w innym oknie?

Odpowiedz

6

myślę można dodać to parametry uwierzytelniania w adresie URL i zrobić GET w swojej stronie serwera

//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

W końcu poszedłem sobie z tym problemem. Zrobiłem standardowy plik http.get dla pdf. Zwracam krótki adres URL, aby uzyskać połączenie, które umożliwia nieautoryzowane pobieranie z window.open do nowego okna. Twoje rozwiązanie byłoby również możliwe do zrealizowania. – user2576168

+4

@hmartos Wysłanie Twojego tokena w adresie URL ujawnia go do użycia przez każdego, kto podsłuchuje twoje pakiety wysłane na serwer. Adres URL nigdy nie jest szyfrowany i dlatego może być widoczny dla każdego. Uważaj, aby nie narażać swojego tokena. Według słów Gandalfa: "Zachowajcie to w tajemnicy, zachowajcie bezpieczeństwo". – JFarr

+1

Dzięki za radę @JFarr, jakikolwiek pomysł, jak przekazać token do API, utrzymując go w sekrecie? – hmartos