Я пытаюсь поразить контроллер из шаблона, мои вызовы http-клиента автоматически добавил токен, но эта ссылка не работает, поэтому я попытался добавить канал, чтобы он сделать вызов httpClient, но он не работает.
У меня есть следующий шаблон в приложении Angular 8:
<a href = "MY_API + '/my/url/' + myId | secureLink | async" target = "_blank">Download PDF</a>
Это труба:
@Pipe({
name: 'secureLink'
})
export class SecureLinkPipe implements PipeTransform {
constructor(private http: HttpClient, private sanitizer: DomSanitizer) { }
transform(url): Observable<SafeUrl> {
return this.http
.get(url, { responseType: 'text' })
.map(val => this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(val)));
}
}
Если труба работала правильно, я должен был попасть в контроллер:
@GetMapping("/my/url/{myId}")
public ResponseEntity<byte[]> generatePDF(@PathVariable("myId") String myId) {
Без трубы я смог добраться до фильтра JWT, но, конечно, он нулевой. Вы можете помочь с преобразованием URL-адреса в http-вызов клиента?





HttpInterceptor работает только с HttpClient вызовами методов. Якорные ссылки не будут перехвачены, поэтому не будет добавлен токен авторизации.
Вы можете создать link button или перехватить анкорный клик (якорь без href) и вызвать API из обработчика кликов.
Проблема не в твоей трубе. Это от того, как вы его используете. Эта строка неверна:<a href = "MY_API + '/my/url/' + myId | secureLink | async" target = "_blank">Download PDF</a>
Вы используете обычный текст. Что вам нужно сделать, так это привязать значение к атрибуту href.
href = "1+1" => результат: href="1+1", литерал, ничего не меняется[href] = "1+1" => результат: href="2"Итак, чтобы решить эту проблему, вы должны использовать это:
"<a [href]="MY_API + '/my/url/' + myId | безопасная ссылка | async" target="_blank">Скачать PDF"
Так работает привязка angular, поэтому, если это не так, у него должна быть причина, вы можете поделиться ошибкой или опубликовать свой код в stackblitz, мы можем посмотреть вместе
[hred] не сработало, поэтому я удалил [] попробую завтра вариант (клик) (без пайпа