【问题标题】:http request missing through httpInterceptor angular 8http请求通过httpInterceptor angular 8丢失
【发布时间】:2020-07-29 01:38:23
【问题描述】:

我正在尝试为我们的内部门户添加静态授权标头,但添加标头时缺少一些文件下载

下面是我正在使用的代码

import { Injectable } from '@angular/core';
import {
    HttpRequest,
    HttpHandler,
    HttpEvent,
    HttpInterceptor
} from '@angular/common/http';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class TokenInterceptor implements HttpInterceptor {       
   intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

   request = request.clone({
     setHeaders: {
     Authorization: `Basic rpzLuipWBVhKgGIyuiicxA$qbegGnPytnn$IZYzn3GrugiKeQMRIm4LsCwVqb0Qs`        
   }
});
   return next.handle(request);
}
}

【问题讨论】:

  • 您是否在模块组件中添加了 TokenInterceptor 作为“提供者”?
  • 是添加的。并非所有的 http 请求都从拦截器中丢失。只有锚标记的文件下载丢失。
  • 您是说拦截中使用的标头效果很好(授权),但其中一些不起作用,对吧?
  • 是的。那些不工作的部分通过锚标签被调用 - 示例 - 下载到 Excel 文件

标签: angular8 angular-http-interceptors


【解决方案1】:

基本上httpInterceptor 仅适用于xhr 请求。由于锚标签不属于该类别,因此以下是已完成的工作。

openPdf(fileLink, fileName) {
    // Prevent default behavior when clicking a link
    // $event.preventDefault();
    // Get filename from href
    //var filename = fileLink;
    this.http.get(fileLink, { responseType: 'arraybuffer' }).subscribe(function (data) {
      const file = new Blob([data], { type: 'application/pdf' });
      const fileURL = URL.createObjectURL(file);
      const element = document.createElement('a');

      element.setAttribute('href', fileURL);
      element.setAttribute('download', fileName);
      element.style.display = 'none';
      document.body.appendChild(element);
      element.click();
      document.body.removeChild(element)
    });   }

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    相关资源
    最近更新 更多