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?
10
A
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);
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
@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
Dzięki za radę @JFarr, jakikolwiek pomysł, jak przekazać token do API, utrzymując go w sekrecie? – hmartos