簡體   English   中英

Spring 引導似乎沒有向我的前端公開自定義 header

[英]Spring boot does not seem to expose a custom header to my frontend

我正在使用 Spring 引導后端和 Angular 前端,並希望實現下載 pdf 文件的功能。

為此,我在我的 REST 控制器中實現了以下處理程序:

  @GetMapping("/{id}")
  public ResponseEntity<Resource> getPdf(@PathVariable Long id) {
    Pdf pdf = this.pdfService.getPdf(id);
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.add("filename", pdf.getId());
    httpHeaders.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + pdf.getId() + "\"");
    return ResponseEntity.ok()
      .headers(httpHeaders)
      .body(new ByteArrayResource(pdf.getContent()));
  }

在我的前端,我在收到后端的響應后使用文件保護程序來保存文件。 文件保護程序需要一個文件名,我想通過從 http 響應 header 讀取文件名來設置該文件名。 問題是我在后端明確設置的 header 在我的客戶端中不可見。 記錄響應時,我只能看到以下標題:

響應頭

我不知道為什么我看不到我在后端設置的 header。

在做了一些研究之后,我發現也許,只是也許,它與我需要為自定義 Http 頭設置的訪問控制允許來源選項有關。 我玩弄了它,但沒有設法提出解決方案。

所以我問:以前有人見過這個問題嗎?

響應中很可能有標頭,但是出於 CORS 安全原因,您無法從 JS 中讀取它們。

您應該添加Access-Control-Expose-Headers header 以顯式公開這些標頭

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM