2014-06-09 21 views
17

Mam aplikację kątową, którą potrzebowałem przekierować na zewnątrz do strony o niezgłębionym html, więc pomyślałem, że mogę po prostu użyć $window.location.href, aby przekierować aplikację kątową na moją zewnętrzną teren. To faktycznie działa dobrze, jednak mam backend nodejs/express, który sprawdza token uwierzytelnienia przed podaniem jakiejkolwiek treści (nawet statycznej).Dodawanie nagłówków http do window.location.href w aplikacji Angular app

Wymaga to, aby token autoryzacji został wysłany w nagłówku żądania http. Teraz pytanie:

Can/Jak dodać token uwierzytelniający do żądania, które zostało wprowadzone przez zmianę $window.location.href przed wysłaniem?

Odpowiedz

20

Podczas korzystania z $window.location.href przeglądarka wykonuje żądanie HTTP, a nie Twój kod JavaScript. Dlatego nie można dodać niestandardowego nagłówka, takiego jak Authorization, za pomocą wartości tokena.

Możesz dodać plik cookie za pomocą JavaScript i umieścić tam token uwierzytelniający. Pliki cookie zostaną automatycznie przesłane z przeglądarki. Będziesz jednak chciał zapoznać się z implikacjami związanymi z bezpieczeństwem używania pliku cookie względem nagłówka. Ponieważ oba są dostępne za pośrednictwem JavaScript, nie ma tam dodatkowego wektora ataku. O ile nie usuniesz pliku cookie po załadowaniu nowej strony, może być dostępny exploit CSRF.

+1

Świetna odpowiedź. Zastanawiam się, czy ciasteczka kątowe nadawałyby się do tego. W każdym razie dzięki za właściwy kierunek. – britztopher

1

Używam JWT jako uwierzytelniania w backendu Laravel PHP i działa przez umieszczenie ?token=... w URL. Na przykład przy korzystaniu z AngularJS z wtyczką satelitarną dodam do adresu URL ?token=' + $auth.getToken().

Używam go wyłącznie do wywołań interfejsu API przy użyciu protokołu SSL. Należy pamiętać, że może to nie być bezpieczny sposób uwierzytelniania w przypadku użycia.

+5

Dobrze osadzony token jako parametr adresu URL jest ostatnią rzeczą, którą chciałbym zrobić. –

+0

To może być trochę brzydkie, ale działa! – Kong

+0

Nawet w protokole SSL sniffer może odczytać adres URL żądania, więc jest to WORZKI sposób przekazania tokena do żądania. Jeśli korzystasz z protokołu SSL, powinieneś umieścić token w nagłówkach lub treści. – Thecave3