저는 인증이 JWT 토큰에 의해 처리되는 Angular에서 webapp을 작성하고 있습니다. 즉, 모든 요청에는 필요한 모든 정보가 포함 된 "Authentication"헤더가 있습니다.
이것은 REST 호출에서 잘 작동하지만 백엔드에서 호스팅되는 파일에 대한 다운로드 링크를 처리하는 방법을 이해하지 못합니다 (파일은 웹 서비스가 호스팅되는 동일한 서버에 있습니다).
일반 <a href='...'/>
링크는 헤더가 없어 인증이 실패하기 때문에 사용할 수 없습니다 . 의 다양한 주문에 대해서도 동일합니다 window.open(...)
.
내가 생각한 몇 가지 솔루션 :
- 서버에 보안되지 않은 임시 다운로드 링크 생성
- 인증 정보를 URL 매개 변수로 전달하고 케이스를 수동으로 처리합니다.
- XHR을 통해 데이터를 가져오고 파일 클라이언트 측에 저장합니다.
위의 모든 것이 만족스럽지 않습니다.
1은 내가 지금 사용하고있는 솔루션입니다. 나는 두 가지 이유로 좋아하지 않습니다. 첫째는 보안 상 이상적이지 않고, 둘째는 작동하지만 특히 서버에서 상당히 많은 작업이 필요합니다. 새로운 "무작위"를 생성하는 서비스를 호출해야하는 것을 다운로드하려면 "url, 어딘가에 (아마도 DB에) 저장 한 다음 클라이언트에 반환합니다. 클라이언트는 URL을 가져 와서 window.open 또는 이와 유사한 것을 사용합니다. 요청시 새 URL은 여전히 유효한지 확인한 다음 데이터를 반환해야합니다.
2는 적어도 일이 많은 것 같습니다.
3은 사용 가능한 라이브러리를 사용하는 경우에도 많은 작업과 많은 잠재적 문제로 보입니다. (내 자신의 다운로드 상태 표시 줄을 제공하고 전체 파일을 메모리에로드 한 다음 사용자에게 파일을 로컬에 저장하도록 요청해야합니다.)
이 작업은 매우 기본적인 작업으로 보이므로 사용할 수있는 훨씬 더 간단한 작업이 있는지 궁금합니다.
필자는 "각도 방식"솔루션을 반드시 찾고있는 것은 아닙니다. 일반 Javascript가 좋습니다.