[英]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.