Я пишу веб-сторінку в Angular, де аутентифікація обробляється маркером JWT, тобто кожен запит має заголовок "Автентифікація" з усією необхідною інформацією.
Це чудово працює для REST-дзвінків, але я не розумію, як мені обробляти посилання для завантаження файлів, розміщених у бекенді (файли розміщені на тому ж сервері, на якому розміщені веб-сервіси).
Я не можу використовувати звичайні <a href='...'/>
посилання, оскільки вони не несуть жодного заголовка, і автентифікація не вдасться. Те саме для різних завдань window.open(...)
.
Деякі рішення, про які я думав:
- Створити тимчасове незахищене посилання для завантаження на сервер
- Передайте інформацію про автентифікацію як параметр url та вручну обробляйте цей випадок
- Отримайте дані через XHR та збережіть сторону клієнтського файлу.
Все вищезазначене є менш ніж задовільним.
1 - це рішення, яке я зараз використовую. Мені це не подобається з двох причин: по-перше, це не ідеально для безпеки, по-друге, це працює, але це вимагає досить багато роботи, особливо на сервері: для завантаження чогось мені потрібно зателефонувати до служби, яка генерує новий "випадковий" "url, зберігає його десь (можливо, у БД) протягом певного часу та повертає його клієнту. Клієнт отримує URL-адресу та використовує window.open або подібний з ним. На запит нової URL-адреси слід перевірити, чи вона все ще дійсна, а потім повернути дані.
2 здається щонайменше стільки ж роботи.
3, здається, багато роботи, навіть використовуючи наявні бібліотеки та багато потенційних проблем. (Мені потрібно надати власну панель стану завантаження, завантажити весь файл у пам'ять, а потім попросити користувача зберегти файл на локальному рівні).
Завдання здається досить базовим, тому мені цікаво, чи є щось набагато простіше, що я можу використати.
Я не обов'язково шукаю рішення "Кутовий шлях". Регулярний Javascript буде добре.