2014-06-09 2 views
17

각도가 아닌 HTML 페이지로 바깥 쪽을 리디렉션해야하는 각형 응용 프로그램을 가지고 있으므로 $window.location.href을 사용하여 외부 응용 프로그램으로 방향 지정 응용 프로그램을 리디렉션 할 수 있다고 생각했습니다. 대지. 이것은 실제로 정상적으로 작동하지만, 어떤 컨텐츠 (심지어 정적 컨텐츠)를 제공하기 전에 auth 토큰을 검사하는 nodejs/express 백엔드가 있습니다.각도 응용 프로그램에서 window.location.href에 http 헤더 추가

이렇게하려면 인증 요청 헤더의 헤더에 인증 토큰을 보내야합니다. 이제 질문 :

Can/전달하기 전에 $window.location.href을 변경하여 작성한 요청에 인증 토큰을 추가 할 수 있습니까?

답변

20

$window.location.href을 사용하면 브라우저가 JavaScript 코드가 아닌 HTTP 요청을하고 있습니다. 따라서 Authorization과 같은 사용자 정의 헤더를 토큰 값과 함께 추가 할 수 없습니다.

JavaScript를 통해 쿠키를 추가하고 거기에 인증 토큰을 넣을 수 있습니다. 쿠키는 브라우저에서 자동으로 전송됩니다. 그러나 쿠키 대 머리글 사용시 보안 관련 사항을 검토해야합니다. 두 가지 모두 자바 스크립트를 통해 액세스 할 수 있으므로 추가 공격 경로는 없습니다. 새로운 페이지가로드 된 후에 쿠키를 제거하지 않으면 CSRF 공격이 가능할 수 있습니다.

+1

대단한 대답입니다. 앵귤러 쿠키가이 작업에 적합한 지 궁금합니다. 어쨌든 올바른 방향에 대한 감사. – britztopher

1

나는 Laravel PHP 백엔드에서 인증으로 JWT를 사용하고 있으며 URL에 ?token=...을 넣어서 작동합니다. 예를 들어 인공위성 플러그인과 함께 AngularJS를 사용하는 경우 ?token=' + $auth.getToken()을 URL에 추가합니다.

SSL을 사용하여 API 호출에 엄격하게 사용합니다. 유스 케이스에서는 이것이 안전한 인증 방법이 아닐 수도 있습니다.

+5

토큰을 URL 매개 변수로 잘 포함시키는 것이 내가하고 싶은 마지막 일입니다. –

+0

약간 추한 일이지만 작동합니다! – Kong

+0

SSL에서도 스니퍼는 요청의 URL을 읽을 수 있으므로 토큰을 요청에 전달하는 것이 가장 바람직합니다. SSL을 사용한다면 토큰을 헤더 나 본문에 넣어야합니다. – Thecave3

관련 문제